sed替换ip地址

Sed replacement of ip address

我正在尝试使用 sed 将一个 IP 地址替换为另一个 IP 地址。任何援助将不胜感激。

test.1 文件中的字符串是:

o=Acc1111 3415 1536 IN IP4 10.201.25.173.

我只想用 127.0.0.1.

替换 10.201.25.173.

所需的最终字符串应为:

o=Acc1111 3415 1536 IN IP4 127.0.0.1.

我的 sed 正则表达式是:

sed 's/o=.*IN IP4.*/*IN IP4 127.0.0.1./' test.1

但这会将所有字符串替换为 IN IP4 127.0.0.1.

我需要在一行正则表达式中使用该命令。可以吗?

使用捕获组和反向引用将行首复制到替换中,并将 IP 替换为 127.0.0.1

sed 's/\(o=.*IN IP4 \).*/27.0.0.1./' test.1

\(...\) 创建一个捕获组。在替换中 </code> 替换为与第一个捕获组匹配的输入部分,<code> 获取第二个捕获组,依此类推。

一个更简单的解决方案是使用 awk 并只替换最后一个字段。

awk '/IN IP4/ {$NF="127.0.0.1."}1' file
o=Acc1111 3415 1536 IN IP4 127.0.0.1.

这会将所有行中的 IP 替换为 127.0.0.1. IN IP4