如果前三个八位位组匹配,如何使用sed替换文件中的所有IP

时间:2018-08-27 07:53:28

标签: bash sed

带有GNU bash版本4.4.0的Ubuntu 16.04

我需要发布dmesg,但在此之前,我想删除所有目标ips 并将它们替换为xxx.xxx.xxx.xxx

前3个八位位组相同,但最后一个八位位组却不同:

示例:DST = 123.12.12.145

sed -i 's/DST=123.12.12.???/DST=xxx.xxx.xxx.xxx/g' filename

1 个答案:

答案 0 :(得分:3)

您可以使用

sed -i -E 's/DST=123\.12\.12\.[0-9]{1,3}/DST=xxx.xxx.xxx.xxx/g' file

查看online demo

请注意,如果您需要匹配文字点,则应转义.个字符。

[0-9]{1,3}兼容POSIX ERE的模式(已启用-E)将匹配1、2或3位数字。

要确保您只匹配末尾的3位数字,然后再匹配其他数字,并且确保匹配DST而不匹配ADST,则可以尝试添加单词边界{{1 }}和\<

\>