sed 到 var 保存特殊字符

sed 到 var 保存特殊字符

你好,我正在尝试使用

sed -i -e s/"$before"/"$after"/g ~/.A/$sfi

将文件 .A 中的一行从 $before 替换为 $after,但两个变量都包含字符 &,我认为这是导致无法正常工作的原因,有人能给出解决方案吗?非常感谢

答案1

替换部分中的 & 符号似乎引起了您的担忧。替换部分中的 & 符号被替换为与模式匹配的文本。示例:

$ before="time&again"
$ after="to&fro"
$ sed "s/$before/$after/" <<END
> hello
> world time&again !
> END
hello
world totime&againfro !

因此,匹配的文本time&again被替换为to&fro,但&“to”和“fro”之间的文本本身被匹配的文本替换。

解决方案是在替换端转义“&”符号。使用bash 参数替换将得到期望的结果:

sed "s/$before/${after//&/\\&}/"

相关内容