テキストを別のテキストに置き換える

テキストを別のテキストに置き換える

文字列を別の文字列に置き換えたいです。例: 次のテキストを変更したいと思います。

"listen_addresses = ['127.0.0.1:53', '[::1]:53']"

次のテキストで

"listen_addresses = ['127.0.0.1:40', '[::1]:40']"

私は次のコマンドを試しました。

sudo sed "s#listen_addresses \= \['127\.0\.0\.1\:53'\, '\[\:\:1\]\:53'\]'#listen_addresses \= \['127\.0\.0\.1\:40'\, '\[\:\:1\]\:40'\]#g"

私は次のような結果を得ました。

入力する:listen_addresses = ['127.0.0.1:53', '[::1]:53']

出力:listen_addresses = ['127.0.0.1:53', '[::1]:53']

私は何が間違っていましたか?

ベストアンサー1

コメントに記載されているとの[]エスケープされます。

echo "listen_addresses = ['127.0.0.1:53', '[::1]:53']" |
sed -e "s#listen_addresses = \['127.0.0.1:53', '\[::1\]:53'#listen_addresses = ['127.0.0.1:40', '[::1]:40'#"

これは

listen_addresses = ['127.0.0.1:40', '[::1]:40']

おすすめ記事