我想知道是否有任何提示grep尽可能快.我有一个相当大的文本文件库,以最快的方式搜索.我把它们全都小写了,这样我就可以摆脱-i选择了.这使得搜索速度更快.
此外,我发现-F并且-P模式比默认模式更快.当搜索字符串不是正则表达式(只是纯文本)时,我使用前者,后者如果涉及正则表达式.
有没有人有加速的经验grep?也许用一些特定的标志(我在Linux CentOS上)从头开始编译它,以某种方式组织文件或者以某种方式使搜索并行?
我有两个文件,file1.txt和file2.txt. file1.txt有大约14K线,file2.txt约有20亿. 每行file1.txt有一个字段f1,而file2.txt有3个字段,f1through f3,分隔符|.
我想找到的所有行file2.txt那里f1的file1.txt比赛f2中file2.txt(或上线的任何位置,如果我们不想花费额外的时间分割的数值file2.txt).
file1.txt(约14K行,未排序):
foo1
foo2
...
bar1
bar2
...
Run Code Online (Sandbox Code Playgroud)
file2.txt(约20亿行,未排序):
date1|foo1|number1
date2|foo2|number2
...
date1|bar1|number1
date2|bar2|number2
...
Run Code Online (Sandbox Code Playgroud)
预期产量:
date1|foo1|number1
date2|foo2|number2
...
date1|bar1|number1
date2|bar2|number2
...
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的,似乎需要几个小时才能运行:
fgrep -F -f file1.txt file2.txt > file.matched
Run Code Online (Sandbox Code Playgroud)
我想知道是否有更好,更快的方法使用常见的Unix命令或小脚本执行此操作.