sed - 匹配 IP 八位字节并删除行

sed - 匹配 IP 八位字节并删除行

我需要一个解决方案,最好是 sed,它可以匹配包含任何数字组合的 IP 八位字节并删除该行。例如:

我的文件:

 192.168.100.12
 192.168.200.12
 10.10.20.10
 10.10.30.20

我需要删除包含 10.10.20.x 子网上找到的任何 IP 的行并将其删除。因此,如果文件包含 10.10.20.10 、 20.11 、 20.12 等...它们都会被删除。我还需要一个内联替代品。

我尝试过的:

sed -i '/10\.10\.20\.\([0-9]\{1,3\}\)/d' file

和这个:

sed -i '/10.\.10\.20\.*\([0-9]\{1,3\}\)*/d' file​

但两者都不起作用。该命令完成时没有错误,但这些行仍在文件中。我也愿意接受其他解决方案,例如 awk。

答案1

使用 GNU sed:

sed -i '/10\.10\.20\.[[:digit:]]\{,3\}/d' file

使用 BSD sed,您需要sed -i ''.

相关内容