2011-11-09 5 views
6

一重引用符( ')をバックスラッシュで置き換えた後、一重引用符(\')をsedで置き換える方法はありますか?sedを使用して一重引用符( ')をバックスラッシュ、一重引用符(')に置き換える方法はありますか?

sed s/\'/\\\'/ 

は、リテラルを書くことがないため動作しません。

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

バックスラッシュが引用符をエスケープしなくなるため、正規表現の引用符のように扱われるため、機能しません。

+0

エコー\」| sed 's /'/\\\ '/ g " –

+1

Mac OSで動作します - あなたの運賃は異なる場合があります... –

答えて

7

replacem ENT

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

例えば

$ 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

方法について:...それは4つのバックスラッシュBは、バックスラッシュで sedの "S、 'BBBB'、G" ファイル です...

0

は、-eオプションを使用します。

のsed -es/\ '/ \\'/gをFILE2

2

次のことを試してみてください。

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

これが機能することを証明するために:

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

出力は次のようになります。

Hello \'World\' 
-1

これは動作するようです:

<<<"''''" sed 's/'\''/\\&/;s/\('"'"'\)\(..\)$/\\\1\2/;'s/\'\'$/\\\\\'\'/";s/'$/\\\'/" 
\'\'\'\' 
関連する問題