grep -f 比不带 -f 的 grep 运行得更快

grep -f 比不带 -f 的 grep 运行得更快

请告知为什么 grep -f 比在同一文件上单独 grep 多个关键字更快。

在某些情况下,这两个结果都会在几秒钟内产生。对于某些文件,普通 grep 需要 15 分钟,而 grep -f 需要不到一分钟。

grep -f <search_pattern_50keys_file.txt> <file_name>
grep search_key_1 <file_name>
grep search_key_1 <file_name>
...
...
grep search_key_50 <file_name>

问候,维拉

答案1

根据我的经验,执行时间没有真正的差异。我尝试使用一个非常大的文本文件。我的模式文件包含:

2a8f

$ time grep 2a8f /tmp/md5sums > /dev/null

real    0m0,543s
user    0m0,439s
sys     0m0,104s

相对

$ time grep -f pattern  /tmp/md5sums > /dev/null

real    0m0,544s
user    0m0,438s
sys     0m0,106s

请注意,半秒是每grep。因此,当然,如果您grep使用不同的模式执行 50 秒,则需要 25 秒,而使用 50 个模式的单个 grep 会延长时间少得多,因为它只需遍历文件(/tmp/md5sums在我的例子中)一次。

相关内容