万众期待的 ripgrep 已经上线。
grep是我们 Linux 用户每天都离不开的行搜索工具,几乎所有的发行版都自带这个工具。多年来,它几乎没有变化,显得有些停滞不前。而
ripgrep的出现,则为这个领域带来了巨大的震动。
ripgrep 非常出色,其 GitHub 仓库已经接近 14000 个星标。仓库地址为:https://www.php.cn/link/add6ab8551d16aa6fbe68c50f740cc94。
ripgrep 超越 grep 的第一个优势是其跨平台特性,不再排斥 Windows 用户,Windows、Linux、macOS 的使用效果完全一致。
第二个优势是更美观的输出。
当然,美观这个问题见仁见智。
第三个优势是其强大的性能。
我们来实际测试一下。
对比 1:
搜索 Linux 内核源文件(在执行完
make defconfig && make -j8之后),CPU 为 Intel i7-6900K 3.2 GHz,ripgrep 开启了 SIMD 支持。
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 内核源代码,搜索范围和参数有所变化。
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 的大文件。
rg -w 'Sherlock [A-Z]\w+'
5268
2.108s
GNU grep
LC_ALL=C egrep -w 'Sherlock [A-Z]\w+'
5268
7.014s
为什么推荐使用 ripgrep?
因为它涵盖了其他类似搜索工具的大部分功能,并且速度更快。ripgrep 会识别 .gitignore 文件并忽略其中指定的文件和目录。默认情况下不会搜索隐藏文件和目录。默认情况下不会搜索二进制文件。ripgrep 可以指定搜索某些类型的文件。例如,
rg -tpy foo只搜索 py 文件,
rg -Tjs foo在搜索时排除 js 文件。ripgrep 支持 Unicode。可以选择 PCRE2 作为正则引擎。支持非 UTF-8 文件的搜索。支持压缩包内文件的搜索。支持任意预处理过滤器。还等什么,马上执行以下命令:
代码语言:javascript代码运行次数:0运行复制```javascript $ cargo install ripgrep
安装使用吧。










