我想知道有没有让grep
越快越好的建议。我有一个相当大的文本文件库,可以以最快的方式进行搜索。我把它们都改成了小写,这样我就可以去掉-i
选项了。这使得搜索速度更快。
此外,我还发现-F
和-P
模式比默认模式更快。当搜索字符串不是正则表达式(纯文本)时,我使用前者,如果涉及正则表达式,则使用后者。
有没有人有加速grep
的经验?也许可以使用某个特定的标志从头开始编译它(我在Linux CentOS上),以某种方式组织文件,或者以某种方式使搜索并行?
发布于 2012-01-31 00:18:39
尝试使用包含an example of how to use it with grep
的GNU parallel
grep -r
以递归方式遍历目录。在多核parallel
上,GNU CPU通常可以加速这一过程。
查找。-type f| parallel -k -j150% -n 1000 -m grep -H -n字符串{}
这将在每个核心上运行1.5个作业,并向grep
提供1000个参数。
对于大文件,它可以使用--pipe
和--block
参数将输入拆分为几个块:
parallel --pipe --block 2M grep foo < bigfile
您还可以通过SSH在几台不同的机器上运行它(需要使用ssh-agent来避免密码):
parallel --pipe --sshlogin server.example.com,server2.example.net grep foo < bigfile
发布于 2012-08-02 20:52:47
如果你正在搜索非常大的文件,那么设置你的语言环境真的很有帮助。
GNU grep在C语言环境中的运行速度比在UTF-8中要快得多。
export LC_ALL=C
发布于 2016-10-14 07:22:09
Ripgrep声称现在是最快的。
https://github.com/BurntSushi/ripgrep
默认情况下还包括并行性
-j, --threads ARG
The number of threads to use. Defaults to the number of logical CPUs (capped at 6). [default: 0]
来自自述文件
它是建立在
的正则表达式引擎之上的。Rust的正则表达式引擎使用有限自动机、SIMD和积极的文字优化来使搜索非常快速。
https://stackoverflow.com/questions/9066609
复制相似问题