我想找到最有效的正则表达式来在一次搜索中找到三个 IP 地址,但我不确定是否有更有效(更快)的语法可以使用。
我试过一次搜索一个地址,但我很好奇是否有更快的方法。
zgrep -a -i 192\.168\.1\.(10|23|34) *.* >> Results.txt
我没有收到任何错误。我真的只是想找出是否可以使用更快的语法。
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
删除忽略大小写-i
标志可能会使其更快。对于固定字符串匹配,例如您示例中的 3 个可能匹配,grep -F
或者grep -f
也很有用。
sift
如果您有非常大的文件,您也可以使用。