天下武功,唯快不破——快速搜索工具 ripgrep

2019-06-12 SteamedFish

关注我们,获一手游戏运维方案

SteamedFish

网易游戏资深运维工程师,主要工作方向为网易游戏 MySQL SaaS 的运维,业余时间喜欢学习各种无用的知识,折腾各种无用的东西。

前言

天下武功,唯快不破!本文介绍快速搜索工具 ripgrep,让你的速度异于常人!

不同内容搜索工具的对比

内容搜索,不就是 grep 命令嘛?其实,还有其他的。让我们对比一下以下搜索工具!!

  • grep :最古老最经典的搜索工具

  • The Platinum Searcher(pt):golang 编写的搜索工具

  • UniversalCodeGrep(ucg):C++ 编写的搜索工具

  • ack:perl 编写的搜索工具

  • sift:golang 编写的搜索工具

  • git-grep:git 自带的搜索工具

  • The Silver Searcher(ag):C 语言编写的搜索工具

  • ripgrep(rg):rust 编写的搜索工具

搜索速度

目录搜索

  • 搜索内容: Linux 内核源码

  • 测试内容:普通搜索,无正则表达式,区分大小写

工具 命令 时间(秒)
grep grep -FR ext4 . 37.972
ucg ucg -Q --nosmart-case ext4 1.196
pt pt ext4 0.994
ack ack -Q ext4 8.523
sift sift -SQ ext4 1.886
git grep git grep -F ext4 1.911
ag ag -sQ ext4 1.011
rg rg -sF ext4 0.955

文件搜索

  • 搜索内容:红楼梦全本

  • 测试内容:中文搜索

工具 命令 时间(秒)
grep grep '賈母' 24264-0.txt 1.084
ucg ucg '賈母' 24264-0.txt 1.926
pt pt '賈母' 24264-0.txt 0.235
ack ack '賈母' 24264-0.txt 0.845
sift sift '賈母' 24264-0.txt 0.228
git grep git grep --no-index '賈母' 24264-0.txt 1.644
ag ag '賈母' 24264-0.txt 1.585
rg rg '賈母' 24264-0.txt 0.251

对比结论:

pt(The Platinum Searcher) 和 rg(ripgrep) 两个工具,速度最快!

功能对比

ack 的作者维护了一份各种搜索工具的特性对比。可以看到,ack、ag 和 rg 的特性比较丰富。

对比结论

rg,也就是 ripgrep,速度快,特性多,在各种工具中综合实力胜出。不过也有少量特性是 rg 所没有的,这个时候只能使用 ack 或者 ag 等速度稍慢但是仍然比 grep 快很多的工具了。

rg 工具简介

ripgrep 是使用 rust 编写的搜索工具,具有以下特点:

  • 非常快速的搜索速度

  • 极为丰富和实用的搜索功能

  • 支持查找替换

  • 支持搜索多种中文编码的文件(使用 --encoding 指定编码)

  • 支持通过配置文件 .ripgreprc 改变默认行为

  • 支持将搜索结果输出为 json 格式

  • 支持搜索多种格式的压缩文件,例如 gz、bz2 等

  • 支持对输出结果进行排序

  • 默认会读取 .gitignore 文件并忽略其中设置的文件(可以使用 --no-ignore 打开)

  • 默认不会读取隐藏文件(可以使用 --hidden 打开)

  • 默认不会搜索非文本文件(可以使用 --text 打开)

  • 默认不会跟踪符号连接(可以使用 --follow 打开)

以下是部分比较常用的 rg 命令的演示,完整的命令请参考 rg --help

  • 普通搜索:rg name Makefile

  • 正则搜索:rg 'namew+' Makefile

  • 搜索目录:rg 'namew+'

  • 只搜索特定后缀的文件:rg 'namew+' -g '*.c'

  • 不搜索特定后缀的文件: rg 'namew+' -g '!*.c'

  • 只搜索 C 语言文件:rg 'namew+' -g '*.{c,h}'

  • 只搜索 C 语言文件:rg 'namew+' -t c

  • 不搜索 C 语言文件:rg 'namew+' -T c

  • 查看支持的所有类型:rg --type-list

  • 自定义类型:rg 'namew+' --type-add 'web:*.{html,css,js}' -t web

  • 查找内容并替换:rg 'name(w+)' -r NAME$1

  • 不查找超过 50 个字符的行:rg 'namew+' -M 50

rg 工具和编辑器的结合

  • vim:使用 vim-ripgrep 插件

  • emacs:有以下几种选择

    • ripgrep.el

    • ivy 提供了 counsel-rg 命令

    • helm-rg

    • deadgrep

    • color-rg

  • vscode:使用 vscode-ripgrep

这是 emacs 使用 counsel-rg 命令搜索 linux 源码文件的效果:

往期精彩

Redis 应用层协议解析以及在 Python 客户端中的实现

函数式编程在JavaScript下应用实践

运维黑科技:百变环境 - direnv 教你 72 变

面试被问到 Linux loadavg,看这篇推文就不怕被问倒了

Python 代码调试二三事

原始链接

天下武功,唯快不破——快速搜索工具 ripgrep相关推荐

  1. 天下武功唯快不破,实时分析让企业决策又快又准

    导语: 零点刚过,快递已至.尽管这背后有营销的痕迹,但不得不说双十一已不再是从前的双十一.是什么在支撑双十一变得更快?毫无疑问是技术,尤其是以内存计算为代表的实时分析技术,它正在让商业活动变得有迹可循 ...

  2. 天下武功唯快不破:TiDB 在线 DDL 性能提升 10 倍

    作者: TiDB社区小助手 原文来源: https://tidb.net/blog/4f85e64a 导读 随着业务规模和单表容量的增大,DDL 变更耗时越来越长,给 DBA.研发.业务同学带来了越来 ...

  3. 雷军谈互联网七字诀:天下武功唯快不破

    雷军谈互联网七字诀:天下武功唯快不破 2012-05-09 07:59:10 来源: 商界(重庆) 我在互联网混了那么多年,有一个"七字诀".我用这一整套方法论自己创办了小米,也帮 ...

  4. 天下武功唯快不破 云时代IT基建谋出路

    本文讲的是 天下武功唯快不破 云时代IT基建谋出路, 云计算大行其道.大数据愈演愈烈的今天,人们对于技术的要求已经从单纯的 "满足需求"提高到"全面优化"的高度 ...

  5. 天下武功唯快不破——实验吧

    刚刚做了实验吧的题目,现在整理一下 写出解题思路,希望能够帮助到那些需要帮助的人 所有的wp都是以一题一篇的形式写出 主要是为了能够让读者更好的阅读以及查找, 希望你们不要责怪!!共勉!!! 永远爱你 ...

  6. 共识算法解读-天下武功唯快不破Conflux共识算法

    共识算法解读-天下武功唯快不破Conflux共识算法 串行交易引发的吞吐量瓶颈 上次我们讲到GHOST算法,它在中本聪共识的基础上提出的确定主链的算法,在保障了在高吞吐量的同时还保障了安全性(即不容易 ...

  7. Tamevic's Ctf-Web writeup@实验吧‘天下武功唯快不破’

    Tamevic's Ctf-Web writeup@实验吧'天下武功唯快不破' 第一篇wp,希望自己有个好的开始,养成一个好的习惯 url: http://www.shiyanbar.com/ctf/ ...

  8. 7.天下武功唯快不破

    估计提示: 看响应头,我们就去看看 我们发现flag,工具尝试发现base64加密了,而且根据快的,提示需要写代码来获得flag,先解开base64看看 根据文字信息,那就是把红色框里面的内容,用PO ...

  9. 实验吧 - 天下武功唯快不破

    打开提供网站 , 发现页面中提示 : There is no martial art is indefectible, while the fastest speed is the only way ...

  10. 实验吧 天下武功唯快不破

    本题用常规方法无法做出来,一直反馈的页面如下: 我一直在考虑什么叫做能否再快一点?这里获取到FLAG,BASE64解码后用POST方式提交还有更快的方式吗?看了其他人的帖子,发现是我找错方向了.这里的 ...

最新文章

  1. 黑莓GPRS上网套餐包月 300MB流量 不限CMWAP/CMNET
  2. Spark配置参数详解
  3. 你好骚啊......
  4. 宝塔Linux面板 5.9专业版破解,付费插件安装免费使用,全网首发!
  5. QQ空间自动点赞脚本1
  6. 动作捕捉 Motion Capture (Mocap)
  7. RS232 与 RS485的区别总结
  8. 泰国大师赛国羽两银收官 林丹决赛不敌骆建佑
  9. 关于outlook不能发送126邮件的问题
  10. What Makes a Video a Video :Analyzing Temporal Information in Video Understanding Models and Dataset
  11. 上海市住房公积金销户提取的步骤
  12. java(File、IO流)
  13. Java Applet与Java Application的区别
  14. 网易域名邮箱支持POP3/SMTP服务
  15. Floorplan基本概念合集
  16. linux下配置调试debug
  17. Keras【极简】ACGAN
  18. 虚幻四视角移动与场景搭建
  19. 201709今日头条测试开发校招面经
  20. 如何进行产品设计,更能激发用户行为

热门文章

  1. 云计算数据中心运维管理要点
  2. Namenode服务挂
  3. 12306崩了,90%的人都用过这三款抢票工具
  4. 糖友每天早上坚持去做这4件事情控糖事倍功半。
  5. linux挂载40t硬盘,Centos支持40T磁盘阵列MD1200
  6. 出售永磁同步电机(pmsm)模型预测控制(MPC)matla b/simulink仿真模型,转速控制,电流控制,转矩控制,有PI矢量控制,直接预测控制(有限集模型预测控制)(这个其中包括做了单矢量和双
  7. lua知识点-unpack
  8. 爬虫返回乱码以及解决办法以及锟斤拷、ISO-8859-1转码、#、#x转码、unicode转码,gbk转码,ascii转码
  9. iphone,ipad,android图片尺寸
  10. WEB前端开发:轮播图的实现(H5+C3+JavaScript)(JQuery)