在unix中快速找到文件中的字符串
发布时间:2020-12-16 01:22:37 所属栏目:安全 来源:网络整理
导读:我想在unix中找到文件中的字符串模式.我使用以下命令: $grep 2005057488 filename 但是文件包含数百万行,我有很多这样的文件.什么是获取除grep以外的模式的最快方法. grep通常与获取的一样快.它的设计只是一回事,而且它做的很好.你可以看看为什么 here. 但
我想在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一次.它甚至配有一个explanation of how to use it with grep.每个核心运行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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |