我的这个字符串在一个文件中出现了 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'