sed替换ip地址

时间:2015-01-10 22:21:56

标签: regex sed

我尝试使用sed替换其他IP地址。任何援助将不胜感激。

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

o=Acc1111 3415 1536 IN IP4 10.201.25.173.

我只想用10.201.25.173.

替换127.0.0.1.

所需的最终字符串应为:

o=Acc1111 3415 1536 IN IP4 127.0.0.1.

我的正则表达式是:

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

但是用IN IP4 127.0.0.1.替换所有字符串。

我需要在一个带衬里的正则表达式中使用该命令。这可能吗?

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:2)

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

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

这会将所有行127.0.0.1.

中的IP替换为IN IP4