我只想使用带有-f FILE选项的grep。这应该使grep使用FILE的每一行作为模式并搜索它。
执行命令
grep -f patternfile searchfile
我使用的模式文件大400MB。我要搜索的文件是7GB。 3分钟后,该过程以70GB内存结束,没有反应。
这是正常的吗?难道我做错了什么? grep没有能力如此大规模?
感谢你的想法。
答案 0 :(得分:5)
如果模式文件中的行是文字字符串,使用“-F”选项会使速度更快。
答案 1 :(得分:2)
您可以尝试破解任务,以便grep进程在文件的每次传递时结束。但是,考虑到你正在搜索的文件大小,我不确定它会有多大用处。
for pattern in `cat patternFile`
do
grep "$pattern" searchFile
done
答案 2 :(得分:0)
我不得不说这是我第一次听说有人之前使用过700MB的图案文件 - 我很惊讶它吃掉了这么多内存。
如果你有时间,我会建议将文件分成几个部分并一次处理一个部分,或者甚至一次只处理7GB文件一个正则表达式。如果您可以将整个7GB文件放入内存中,并且不担心需要多长时间,那么这可能是最可靠的解决方案。