sed を使用して ${FOO} 文字列を ${'$'}{BAR} に置き換えます。

sed を使用して ${FOO} 文字列を ${'$'}{BAR} に置き換えます。

ファイルに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'

関連情報