万众期待的 ripgrep 来了。
`grep` 是咱们 Linuxer 几乎每天都会用到的行搜索工具,几乎所有发行版都自带有这个工具。多少年来,没有什么改变,如一潭死水。`ripgrep`的出现,给这个领域带来了一场轰动。
ripgrep 很牛,现在其 github 已经接近 14000 stars 了。仓库地址是:https://github.com/BurntSushi/ripgrep。
ripgrep 超越 grep 的第一点就是 ripgrep 是跨平台的,不再歧视 Windows 用户,Windows, Linux,macOS 效果完全一致。
第二点,拥有更漂亮的输出。
当然,美这个问题,众口难调。
第三,强力的性能。
是骡子是马,拿出来溜溜。
对比 1 :
搜索 Linux 内核源文件(在执行完 make defconfig && make -j8 之后),CPU Intel i7-6900K 3.2 GHz,ripgrep 开了 SIMD 支持。
工具
命令
行统计
耗时
ripgrep (Unicode)
rg -n -w '[A-Z]+_SUSPEND'
450
0.106s
git grep
LC_ALL=C git grep -E -n -w '[A-Z]+_SUSPEND'
450
0.553s
The Silver Searcher
ag -w '[A-Z]+_SUSPEND'
450
0.589s
git grep (Unicode)
LC_ALL=en_US.UTF-8 git grep -E -n -w '[A-Z]+_SUSPEND'
450
2.266s
sift
sift --git -n -w '[A-Z]+_SUSPEND'
450
3.505s
ack
ack -w '[A-Z]+_SUSPEND'
1878
6.823s
The Platinum Searcher
pt -w -e '[A-Z]+_SUSPEND'
450
14.208s
(上图, ack 有一个 bug :))
对比 2:
还是搜索 Linux 内核源代码,搜索范围和参数有些变化。
工具
命令
行统计
耗时
ripgrep
rg -L -u -tc -n -w '[A-Z]+_SUSPEND'
404
0.079s
ucg
ucg --type=cc -w '[A-Z]+_SUSPEND'
390
0.163s
GNU grep
egrep -R -n --include='*.c' --include='*.h' -w '[A-Z]+_SUSPEND'
404
0.611s
(ucg 在处理符号链接的时候,策略有所不同)
对比3:
搜索一个约 9.3G 的大文件。
工具
命令
行统计
耗时
ripgrep
rg -w 'Sherlock [A-Z]\w+'
5268
2.108s
GNU grep
LC_ALL=C egrep -w 'Sherlock [A-Z]\w+'
5268
7.014s
为什么推荐使用 ripgrep
还等什么,马上执行
安装使用吧。