0 votes

Échapper à chaque caractère dans bash

Je veux prendre une corde comme celle-ci :

Example string 59^!#&$(

Et le transformer en ceci :

\E\x\a\m\p\l\e\ \s\t\r\i\n\g\ \5\9\^\!\#\&\$\(

J'ai essayé :

sed -e 's/./\\&/g; 1{$s/^$/""/}; 1!s/^/"/; $!s/$/"/'

comme indiqué ici :

Mais comme l'a fait remarquer dalelane dans un commentaire Je n'ai pas trouvé de solution, mais cela ne fonctionne pas avec l'installation vanille de bash dans MacOS. Je l'ai confirmé avec MacOS High Sierra.

Des suggestions ?

3voto

Michael Zhou Points 167

Cela fonctionne pour moi avec bsd sed-

echo "I am a jelly donut" | sed 's/./\\&/g'
\I\ \a\m\ \a\ \j\e\l\l\y\ \d\o\n\u\t

et avec votre corde

echo 'Example string 59^!#&$(' | sed 's/./\\&/g'
\E\x\a\m\p\l\e\ \s\t\r\i\n\g\ \5\9\^\!\#\&\$\(

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X