1

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

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

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

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

4

2 回答 2

0

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
于 2019-05-25T13:48:56.147 回答
0

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

sift如果您有非常大的文件,您也可以使用。

于 2019-05-24T20:48:28.487 回答