使用正则表达式高效搜索IP地址

时间:2019-05-24 20:35:30

标签: regex grep zgrep

我想找到一个最有效的正则表达式,一次搜索即可找到三个IP地址,但是我不确定是否可以使用更高效(更快)的语法。

我尝试一次搜索一个地址,但是我很好奇是否有更快的方法。

zgrep -a -i  192\.168\.1\.(10|23|34) *.* >> Results.txt

我没有收到任何错误。我真的只是想找出我是否可以使用更快的语法。

2 个答案:

答案 0 :(得分:1)

idk大约更快(也许删除-a和-i会有所不同,idk),但这将更加准确,因为它将避免与包含您的目标IP地址作为子字符串的更长字符串错误匹配:

zgrep -E '(^|[^0-9])192\.168\.1\.(10|23|34)([^0-9]|$)' file

如果这不是问题,那么它将更快:

printf '192.168.1.10\n192.168.1.23\n192.168.1.34\n' | zgrep -F -f- file

答案 1 :(得分:0)

删除忽略大小写-i标志可以使其更快。对于固定的字符串匹配,例如您的示例中的3种可能的匹配,grep -Fgrep -f也是有用的。

如果文件很大,也可以使用sift