加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读