我尝试使用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.
替换所有字符串。
我需要在一个带衬里的正则表达式中使用该命令。这可能吗?
答案 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.
IN IP4