首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >最快的grep

最快的grep
EN

Stack Overflow用户
提问于 2012-01-30 23:50:43
回答 12查看 83.7K关注 0票数 80

我想知道有没有让grep越快越好的建议。我有一个相当大的文本文件库,可以以最快的方式进行搜索。我把它们都改成了小写,这样我就可以去掉-i选项了。这使得搜索速度更快。

此外,我还发现-F-P模式比默认模式更快。当搜索字符串不是正则表达式(纯文本)时,我使用前者,如果涉及正则表达式,则使用后者。

有没有人有加速grep的经验?也许可以使用某个特定的标志从头开始编译它(我在Linux CentOS上),以某种方式组织文件,或者以某种方式使搜索并行?

EN

回答 12

Stack Overflow用户

回答已采纳

发布于 2012-01-31 00:18:39

尝试使用包含an example of how to use it with grepGNU parallel

grep -r以递归方式遍历目录。在多核parallel上,GNU CPU通常可以加速这一过程。

查找。-type f| parallel -k -j150% -n 1000 -m grep -H -n字符串{}

这将在每个核心上运行1.5个作业,并向grep提供1000个参数。

对于大文件,它可以使用--pipe--block参数将输入拆分为几个块:

代码语言:javascript
复制
 parallel --pipe --block 2M grep foo < bigfile

您还可以通过SSH在几台不同的机器上运行它(需要使用ssh-agent来避免密码):

代码语言:javascript
复制
parallel --pipe --sshlogin server.example.com,server2.example.net grep foo < bigfile
票数 104
EN

Stack Overflow用户

发布于 2012-08-02 20:52:47

如果你正在搜索非常大的文件,那么设置你的语言环境真的很有帮助。

GNU grep在C语言环境中的运行速度比在UTF-8中要快得多。

代码语言:javascript
复制
export LC_ALL=C
票数 70
EN

Stack Overflow用户

发布于 2016-10-14 07:22:09

Ripgrep声称现在是最快的。

https://github.com/BurntSushi/ripgrep

默认情况下还包括并行性

代码语言:javascript
复制
 -j, --threads ARG
              The number of threads to use.  Defaults to the number of logical CPUs (capped at 6).  [default: 0]

来自自述文件

它是建立在

的正则表达式引擎之上的。Rust的正则表达式引擎使用有限自动机、SIMD和积极的文字优化来使搜索非常快速。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9066609

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档