Sed - Insérer un espace entre chaque lettre

Décembre 2016


Insérer un espace entre chaque lettre


$ echo -e "bonjour la vie\net bonjour à toi" | sed 's/./& /g'
b o n j o u r   l a   v i e
e t   b o n j o u r   à   t o i
L'inconvénient c'est que l'espace naturel entre chaque mot est doublé. Pour pallier à ce petit désagrément il suffit d'ajouter :
$ echo -e "bonjour la vie\net bonjour à toi" | sed 's/./& /g;s/  / /g'
b o n j o u r  l a  v i e
e t  b o n j o u r  à  t o i
$  

Voici encore une variante. Par rapport à la précédente le remplacement et fait dans un seul coup de s///
$ echo -e "bonjour la vie\net bonjour à toi" | sed -r 's/([^ ])/\1 /g'
b o n j o u r  l a  v i e
e t  b o n j o u r  à  t o i

Pour ne pas utiliser l'option -r on peut écrire
 sed 's/\([^ ]\)/\1 /g'

Classe de caractères complémentée [^...]


[^...] - est une classe de caractères complémentée qui signifie "reconnaître un caractère non énuméré" et non "ne pas reconnaître un caractère énuméré".
Dans notre cas on peut traduire "reconnaître un caractère qui n'est pas espace".

A voir également :

Ce document intitulé «  Sed - Insérer un espace entre chaque lettre  » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.