2016-04-13 13 views
0

文字列をsedに置き換えようとしています。残念ながら、文字列には一重引用符と "::"記号が含まれています。したがって、私はsedを使用していくつかの問題があります。
configuration::set('feature', '0')configuration::set('feature', '1')に変更する必要があります。一重引用符を含む文字列を他の文字列で置き換えるBash

sed 's%configuration::set('feature', '0')%configuration::set('feature', '1')%g' file.cf 

答えて

1

全部の周りに二重引用符を使用は'は、コマンド文字列を終了し、繰り返しを避けるために、キャプチャグループを使用しないように:コメント(感謝)に基づいて

sed "s%\\(configuration::set('feature', '\\)0'%\\11'%g" file.cf 

、私は」マッチと置き換えに近い見積りを追加して、少し強めました。私は、文字の数が非常に少ないため、私自身のアドバイスに反対することを選んだ。

+1

たとえば、ファイルに 'configuration :: set( 'feature'、 '01')'が含まれていると正しく動作しません。 – dogbane

1

それが唯一の引用の問題だ:私が試した何
。あなたのsedコマンドを二重引用符で囲むか(bashが展開できるものがない場合)、またはすべての一重引用符をエスケープします。

sed 's/configuration::set('"'"'feature'"'"', '"'"'0'"'"')/configuration::set('"'"'feature'"'"', '"'"'1'"'"')/g' 
関連する問題