文字列をファイルの文字列に置き換えようとしています$old
。$new
old=ESX_10.1.1.1\@11.11.11.11
new=host_15_11_0_111.static
私はsedコマンドを使用しています:
sed i "s/${old}/${new}/g" /filename
ただし、単語を置き換えず、エラーも表示しません。私は交換のようなさまざまな方法を試しました。
sed i "s,${old},${new},g" /filename
そして
sed i "s=${old}=${new}=g" /filename
しかし、うまくいきません。この問題を解決するのに役立ちます
答え1
\
他人と一緒に脱出する必要があります\
。次のように bash シェル変数でこれを行うことができます。
sed -i -e "s/${old//\\/\\\\}/${new//\\/\\\\}/g" filename
バラよりman bash
パラメータ拡張のための${parameter/pattern/string}
。繰り返し実行//
の代わりにwithバージョンを使用してください。/
そして私たちは自分で逃げなければならない\
ので、それが何度も繰り返されるでしょう。