万众期待的 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 支持。
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
代悟
开发者专属的AI搜索引擎
68 查看详情
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?
因为它涵盖了其他类似搜索工具的大部分功能,并且速度更快。ripgrep 会识别 .gitignore 文件并忽略其中指定的文件和目录。默认情况下不会搜索隐藏文件和目录。默认情况下不会搜索二进制文件。ripgrep 可以指定搜索某些类型的文件。例如,
rg -tpy foo
只搜索 py 文件,
rg -Tjs foo
在搜索时排除 js 文件。ripgrep 支持 Unicode。可以选择 PCRE2 作为正则引擎。支持非 UTF-8 文件的搜索。支持压缩包内文件的搜索。支持任意预处理过滤器。还等什么,马上执行以下命令:
代码语言:javascript代码运行次数:0运行复制“`javascript$ cargo install ripgrep
安装使用吧。
以上就是【每日一库】ripgrep - grep的替代者的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/396110.html
微信扫一扫
支付宝扫一扫