替换多个文件中的字符串

替换多个文件中的字符串

我利用了一个现有问题 - 我不确定如何将其添加到该问题中。我看到的示例替换了一个字符串 - 我需要替换多个字符串。

我正在尝试使用“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

相关内容