在服务器上的设置文件中查找硬编码的IP地址

时间:2011-12-19 02:49:42

标签: regex ip

为了准备多台服务器的重新IP,我打算在设置文件中搜索服务器上的所有IP地址。

一个简单的第一次尝试:

grep -e "[0-9]*\\.[0-9]*\\.[0-9]"

..产生误报,因为也允许没有数字的字符串。此外,它找到版本号,如1.2.3.4.5,它们不是有效的IP地址。

我确信有人已经考虑过这个问题,并找到了完整的IP地址,找到了涵盖所有异常情况的正则表达式grep。

1 个答案:

答案 0 :(得分:2)

这个怎么样:

(^|[^\.0-9])([0-2]?[0-9]{,2}\.){3}[0-2]?[0-9]{,2}($|[^\.0-9])

使用-e“扩展”grep运行。它不会匹配任何超过四个重复组的数字,或者大于299的数字(接下来最好排除大于255)。

显然,这仅适用于IPv4地址...

修改

基于this question的答案,这里的版本只匹配有效的IPv4地址(我对其进行了修改,因此它不会与超过四个组的数字匹配):

(^|[^\.0-9])(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])($|[^\.0-9])