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".