我利用了一个现有问题 - 我不确定如何将其添加到该问题中。我看到的示例替换了一个字符串 - 我需要替换多个字符串。
我正在尝试使用“sed”更改目录中多个文件中存在的相同字符串。该字符串有多个单词。我使用的模板是:
sed -i 's/oldstring/newstring/g' test.txt
我想要更改同一目录中的多个文件 - 例如更改字符串:
&VARIABLE1 = 10000000
到
&VARIABLE = 1
当我使用以下内容时
sed -i 's/&VARIABLE1 = 10000000/&VARIABLE = 1/g' *.txt
它没有正确地进行替换。
我究竟做错了什么?
答案1
该&
字符在 sed 命令的替换端具有特殊含义s
:
replacement may contain the special character & to refer to that portion of the pattern space which matched, and the special escapes \1 through \9 to refer to the corresponding matching sub-expressions in the regexp.
为了使它真实,你需要逃避它,\&
前任。
$ echo '&VARIABLE1 = 10000000' | sed 's/&VARIABLE1 = 10000000/&VARIABLE = 1/g'
&VARIABLE1 = 10000000VARIABLE = 1
但
$ echo '&VARIABLE1 = 10000000' | sed 's/&VARIABLE1 = 10000000/\&VARIABLE = 1/g'
&VARIABLE = 1