ファイルにN回表示される次の文字列があります。${FOO}
これを次の文字列に置き換える必要があります。${'$'}{BAR}
私の現在の状態は次のとおりです。
sed "s/\\${FOO}/\\${'\\$'}{BAR}/" file.txt
しかし、これは「間違った置換」を引き起こしました。
sed
(バージョン4.8)を使用してこれを正しく達成するにはどうすればよいですか?
答え1
ドル記号の前にバックスラッシュを入れるだけで十分です。
$ echo '${FOO} xxx ${FOO} xxx ${FOO}' | sed "s/\${FOO}/\${'\$'}{BAR}/g"
${'$'}{BAR} xxx ${'$'}{BAR} xxx ${'$'}{BAR}
一重引用符を使用することも可能です。ドル記号を簡素化しますが、単一引用符をもう少し複雑にします。
echo '${FOO} xxx ${FOO} xxx ${FOO}' | sed 's/${FOO}/${'\''$'\''}{BAR}/g'