请告知为什么 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
在我的例子中)一次。