在unix中快速找到文件中的字符串

前端之家收集整理的这篇文章主要介绍了在unix中快速找到文件中的字符串前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在unix中找到文件中的字符串模式.我使用以下命令:
$grep 2005057488 filename

但是文件包含数百万行,我有很多这样的文件.什么是获取除grep以外的模式的最快方法.

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

猜你在找的Bash相关文章