目前我正在一个项目中,我有一个文件充满了IP地址我想删除私人(整个范围)的IP地址,并使用bash来完成它。我做了一个私人地址的匹配,但无法删除它。删除所有私人IP地址
我曾尝试:
sed -i '/(192)\.(168)(\.([2][0-5][0-5]|[1][0-9][0-9]|[1-9][0-9]|[0-9])){2}/d' validIPOnly
同为
127.x.x.x,172.16.x.X,10.x.x.x
目前我正在一个项目中,我有一个文件充满了IP地址我想删除私人(整个范围)的IP地址,并使用bash来完成它。我做了一个私人地址的匹配,但无法删除它。删除所有私人IP地址
我曾尝试:
sed -i '/(192)\.(168)(\.([2][0-5][0-5]|[1][0-9][0-9]|[1-9][0-9]|[0-9])){2}/d' validIPOnly
同为
127.x.x.x,172.16.x.X,10.x.x.x
当捕获组与sed
您可能需要逃避(
)
或指定选项-E
:
$ sed -E -i '/(...)...'
或
$ sed -i '/\(...\)...`
对于GNU的sed只使用-r
选项,而不是-E
。
1.'{2}'表示法在sed上不起作用。使用'-E'。 2.'d'将删除整行,而不是匹配 – nu11p01n73R
172.16.0.0/12 - > [范围从172.16.0.0到172.31.255.255](https://en.wikipedia.org/wiki/Private_network#Private_IPv4_address_spaces) – Cyrus
感谢您的帮助,我会在一瞬间测试它 – Atif