使用 Sed 更改字符串

使用 Sed 更改字符串

我想更改以下字符串

allow ^120\.123\.178\.254$

进入

allow ^124\.130\.23\.235$

与 sed.

我尝试了以下方法,但它不起作用。

sed -e 's/allow ^120\.123\.178\.254$/allow ^124\.130\.23\.235$/g' /etc/xxx/file.conf

你能帮我吗?

答案1

您的源代码中有\$^.字符,需要额外引用。你的目标也\应该被引用

所以生成的字符串有点混乱:

sed 's/allow \^120\\\.123\\\.178\\\.254\$/allow ^124\\.130\\.23\\.235$/'

g仅当该字符串每行可能出现多次时,才需要使用最后一个。

例如:

$ cat x
allow ^120\.123\.178\.254$
$ sed 's/allow \^120\\\.123\\\.178\\\.254\$/allow ^124\\.130\\.23\\.235$/' x 
allow ^124\.130\.23\.235$

答案2

如果perl是一个选项,则搜索模式和替换都可以被引用

$ cat file.conf
allow ^120\.123\.178\.254$

$ perl -pe 's/\Qallow ^120\.123\.178\.254$/q(allow ^124\.130\.23\.235$)/e' file.conf
allow ^124\.130\.23\.235$

相关内容