为了准备多台服务器的重新IP,我打算在设置文件中搜索服务器上的所有IP地址。
一个简单的第一次尝试:
grep -e "[0-9]*\\.[0-9]*\\.[0-9]"
..产生误报,因为也允许没有数字的字符串。此外,它找到版本号,如1.2.3.4.5,它们不是有效的IP地址。
我确信有人已经考虑过这个问题,并找到了完整的IP地址,找到了涵盖所有异常情况的正则表达式grep。
答案 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])