我有一个文本文件(大约1.5千兆字节),我想搜索特定标题的出现。我的名单中有大约1000万个标题。
显然,并非列表中的每个标题都存在于文本文件中。没关系。我只需要知道文本中存在哪些标题。
现在,如果它只有几百个标题,我会使用fgrep
并告诉它从文件中读取搜索字符串(即fgrep -f patternlist.txt bigtextfile.txt
)。
但fgrep
会扼杀这么多数据吗?
将我的标题列表和文本文件转换为可以与fgrep
一起使用的表单有点工作,所以我想知道这是否可能在我去之前有效那种努力。
另一种选择是将标题列表拆分为多个文件,并为每个子列表运行fgrep
一次。如果fgrep
可以处理相当多的搜索字符串,这并不疯狂。如果它可以处理100万,这是一个明智的选择。如果它不能处理100,000(需要超过100次单独运行),那么这是一个不太吸引人的选择。
那么,是否有人使用fgrep
搜索大量字符串?如果没有,是否有其他程序可用?我可以写一两天,但如果我可以避免工作。 。
答案 0 :(得分:0)
fgrep
使用以下发明很好地扩展:
您的模式列表已被读取,已编译并保存在内存中,当然。 big 输入文件可以使用--mmap
选项进行内存映射,以实现最佳资源使用 - 内核将文件映射到内存区域;应用程序本身不知道如何通过简单的内存地址访问整个文件。