grep通常与获取的一样快.它的设计只是一回事,而且它做的很好.你可以看看为什么
here.
但是,为了加快速度,您可以尝试几件事情.首先,看起来你要找的模式是一个固定的字符串.幸运的是,grep有一个’fixed-strings’选项:
-F,--fixed-strings Interpret PATTERN as a list of fixed strings,separated by newlines,any of which is to be matched. (-F is specified by POSIX.)
其次,由于grep在UTF-8上通常相当慢,因此可以通过设置环境LANG = C来尝试禁用国家语言支持(NLS).因此,您可以尝试这个混合:
LANG=C grep -F "2005057488" file
第三,你的问题不清楚,但是如果你唯一的尝试在文件中找到某些东西存在,那么你也可以尝试添加最多的次数以找到该模式.因此,当-m 1,grep将在第一次发现之后立即退出.你的命令现在可以这样看:
LANG=C grep -m 1 -F "2005057488" file
最后,如果你有一个多核cpu,你可以给GNU parallel一次.它甚至配有一个@L_404_2@.每个核心运行1.5个作业,并给出1000个参数grep:
find . -type f | parallel -k -j150% -n 1000 -m grep -H -n STRING {}
要并行使用一个大文件,请使用–pipe:
< bigfile parallel --pipe grep STRING
根据您的磁盘和cpu,读取较大块可能会更快:
< bigfile parallel --pipe --block 10M grep STRING