2011-11-09 26 views
6

Jak zastąpiłbym pojedynczy cytat (') odwrotnym ukośnikiem, a następnie pojedynczy cudzysłów (\') za pomocą sed?Jak zastąpić pojedynczy cudzysłów (') z odwrotnym ukośnikiem, a następnie pojedynczy cytat (') za pomocą sed?

sed s/\'/\\\'/ 

nie będzie działać, ponieważ nigdy nie będziesz mógł pisać dosłownie.

sed ":a;N;s/\'/\\'/g" <file1 >file2 

nie zadziała, ponieważ odwrotny ukośnik nie będzie już ucieczki cytat, to get traktowany jak regex cytatu.

+0

echo \”| sed "s/'/ \\\'/g" –

+1

Działa na Mac OS - Twój przebieg może się różnić ... –

Odpowiedz

7

po prostu zacytuj zamiennik ent

$ echo \' | sed s/\'/"\\\'"/ 
$ \' 

np

$ cat text1 
this is a string, it has quotes, that's its quality 
$ sed s/\'/"\\\'"/ text1 > text2 
$ cat text2 
this is a string, it has quotes, that\'s its quality 
0

jak about: sed "s 'BBBB' g" file gdzie B jest back-slash ... czyli 4 backslashe ...

0

Użyj opcji -e.

sed -es/\ '/ \\'/g plik2

2

Spróbuj wykonać następujące czynności:

sed -e s/\'/\\\\\'/g input > output 

Aby udowodnić, że to działa:

echo "Hello 'World'" | sed -e s/\'/\\\\\'/g 

Wyjście powinno być:

Hello \'World\' 
-1

To wydaje się działać:

<<<"''''" sed 's/'\''/\\&/;s/\('"'"'\)\(..\)$/\\\1\2/;'s/\'\'$/\\\\\'\'/";s/'$/\\\'/" 
\'\'\'\' 
Powiązane problemy