使用 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'

相关内容