Sed - Inserir um espaço entra cada letra

Novembro 2016


$ 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

Veja também :
Este documento, intitulado « Sed - Inserir um espaço entra cada letra  »a partir de CCM (br.ccm.net) está disponibilizado sob a licença Creative Commons. Você pode copiar, modificar cópias desta página, nas condições estipuladas pela licença, como esta nota aparece claramente.