使用grep与大型模式文件

时间:2011-12-08 14:55:31

标签: file memory grep design-patterns

我只想使用带有-f FILE选项的grep。这应该使grep使用FILE的每一行作为模式并搜索它。

执行命令

grep -f patternfile searchfile

我使用的模式文件大400MB。我要搜索的文件是7GB。 3分钟后,该过程以70GB内存结束,没有反应。

这是正常的吗?难道我做错了什么? grep没有能力如此大规模?

感谢你的想法。

3 个答案:

答案 0 :(得分:5)

如果模式文件中的行是文字字符串,使用“-F”选项会使速度更快。

答案 1 :(得分:2)

您可以尝试破解任务,以便grep进程在文件的每次传递时结束。但是,考虑到你正在搜索的文件大小,我不确定它会有多大用处。

for pattern in `cat patternFile`
do
    grep "$pattern" searchFile
done

答案 2 :(得分:0)

我不得不说这是我第一次听说有人之前使用过700MB的图案文件 - 我很惊讶它吃掉了这么多内存。

如果你有时间,我会建议将文件分成几个部分并一次处理一个部分,或者甚至一次只处理7GB文件一个正则表达式。如果您可以将整个7GB文件放入内存中,并且不担心需要多长时间,那么这可能是最可靠的解决方案。

相关问题