前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【每日一库】ripgrep - grep的替代者

【每日一库】ripgrep - grep的替代者

作者头像
MikeLoveRust
发布2019-07-09 14:49:45
发布2019-07-09 14:49:45
2K00
代码可运行
举报
运行总次数:0
代码可运行

万众期待的 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

  1. 因为它覆盖了其它类似搜索工具的大部分特性,并且更快。
  2. ripgrep 会识别 .gitignore 文件并忽略里面指定的文件和目录。默认不会搜索隐藏文件和目录。默认不会搜索二进制文件。
  3. ripgrep 可指定搜索某些类型的文件。比如,rg -tpy foo 只搜索 py 文件,rg -Tjs foo 在搜索时排除 js 文件。
  4. ripgrep 支持 Unicode。
  5. 可选择 PCRE2 作为正则引擎。
  6. 支持非 UTF-8 文件的搜索。
  7. 支持压缩包里面文件的搜索。
  8. 支持任意预处理过滤器。

还等什么,马上执行

代码语言:javascript
代码运行次数:0
运行
复制
$ cargo install ripgrep

安装使用吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-04-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Rust语言学习交流 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档