2 votes

Remplacer par "sed" un caractère avec barre oblique inversée et l'utiliser dans une variable

J'ai cette piqûre : the string's problem et je veux changer cela en :

file 'the string'\''s problem'

Mon code ressemble à ceci :

newline=`echo "$string" | sed "s/'/'\\\''/g"`
echo $newline | sed "s|$newline|file '$newline'|g" >> "$newPList"

Mais le résultat de ceci est :

file 'the string'''s problem'

Des suggestions ?

3voto

Todd Gamblin Points 101

Pas si compliqué

$ str="string's problem"
$ sed 's/'\''/&\\&&/g' <<<"$str"
string'\''s problem
$ new="file '$(sed 's/'\''/&\\&&/g' <<<"$str")'"
$ echo "$new"
file 'string'\''s problem'

Il est primordial de citer le "$new" lorsque vous l'utilisez.

3voto

A.B. Points 84870

C'est un perl une seule ligne, tout en un, sans constructions de chaînes supplémentaires ;)

$ perl -pe "s/^(.*)'(.*)$/file '\$1\'\\\'\'\$2'/" <<< "the string's problem"
file 'the string'\''s problem'

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X