Sed - Inserir um espaço entra cada letra

Faça uma pergunta

$ echo -e "bom dia a vida \net bom dia para ti " | sed 's/./& /g' 
b o n j o u r   l a   v i e 
e    b o m d i a  p a r a  t i
O inconveniente é que o espaço natural entre cada palavra é dobrado. Para resolver este pequeno inconveniente basta adicionar:
$ echo -e "bom dia a vida\net bom dia para ti " | sed 's/./& /g;s/  / /g' 
b o m  d i a  p a r a  a  v i d a
e   b o m  p a r a  t i 
$  

Eis aqui mais uma variante. Em relação à precedente a substituição e faz de um só golpe de s///
$ echo -e "bom dia para a vida\net bom dia para ti " | sed -r 's/([^ ])/\1 /g' 
b o m  d i a  p a r a  a  v i d a
e   b o m  p a r a  t i 

Para não utilizar a opção -r pode-se escrever
 sed 's/\([^ ]\)/\1 /g'

Classe de caracteres complementados [^...]


[^...] - é uma classe de caracteres complementados que significa "reconhece um caractere não enumerado " e não "não reconhecer um caractere enumerado ".
No nosso caso pode-se traduzir `reconhecer um caractere que não tem espaço.


Tradução feita por Ana Spadari
Jean-François Pillou

Nosso conteúdo é produzido em colaboração com especialistas em tecnologia da informação sob o comando de Jean-François Pillou, fundador do CCM.net e diretor digital do Grupo Figaro. CCM é um site sobre tecnologia líder em nível internacional e está disponível em 11 idiomas.

Mais informações sobre a equipe do CCM