2011-08-10 9 views

答えて

1

ありあなたのポストには?文字はませんが、私はあなたの質問は、「どのように私は、このような交換をしますか?」であると仮定します。私はちょうどあなたの入力で簡単なテストファイルを作って、このコマンドラインが動作しているようです:

sed -e 's#"#\\"#g' -e "s#'#\\\'#g" 

例:

$ cat input 
"a" 'b' 
$ sed -e 's#"#\\"#g' -e "s#'#\\\'#g" input 
\"a\" \'b\' 
+0

がない限り私はほとんどあなたの答えをupvotedが、私はデフォルトの区切り文字('/')を使用して信じていますまた、 '#'はコメント文字であるため、 ':'や '、'を使う以外にも使用することに反対します。 –

+3

パターンに '\'や '/'文字が含まれているときに '/'を使うのは好きではありません - 混乱のレシピだけです。うまくいくでしょう。 –

1

sedを使用すると、このすべてがBashを使用して行うことができ、ポータブルソリューションですが組み込みの文字列操作関数も同様です。

(
#set -xv 
#str=$'"a" \'b\'' 
str='"a" '"'b'" # concatenate 'str1'"str2" 
str="${str//\"/\\\"}" 
str="${str//\'/\'}" 
echo "$str" 
) 
関連する問題