天下武功,唯快不破——快速搜索工具 ripgrep
天下武功,唯快不破——快速搜索工具 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相关推荐
- 天下武功唯快不破,实时分析让企业决策又快又准
导语: 零点刚过,快递已至.尽管这背后有营销的痕迹,但不得不说双十一已不再是从前的双十一.是什么在支撑双十一变得更快?毫无疑问是技术,尤其是以内存计算为代表的实时分析技术,它正在让商业活动变得有迹可循 ...
- 天下武功唯快不破:TiDB 在线 DDL 性能提升 10 倍
作者: TiDB社区小助手 原文来源: https://tidb.net/blog/4f85e64a 导读 随着业务规模和单表容量的增大,DDL 变更耗时越来越长,给 DBA.研发.业务同学带来了越来 ...
- 雷军谈互联网七字诀:天下武功唯快不破
雷军谈互联网七字诀:天下武功唯快不破 2012-05-09 07:59:10 来源: 商界(重庆) 我在互联网混了那么多年,有一个"七字诀".我用这一整套方法论自己创办了小米,也帮 ...
- 天下武功唯快不破 云时代IT基建谋出路
本文讲的是 天下武功唯快不破 云时代IT基建谋出路, 云计算大行其道.大数据愈演愈烈的今天,人们对于技术的要求已经从单纯的 "满足需求"提高到"全面优化"的高度 ...
- 天下武功唯快不破——实验吧
刚刚做了实验吧的题目,现在整理一下 写出解题思路,希望能够帮助到那些需要帮助的人 所有的wp都是以一题一篇的形式写出 主要是为了能够让读者更好的阅读以及查找, 希望你们不要责怪!!共勉!!! 永远爱你 ...
- 共识算法解读-天下武功唯快不破Conflux共识算法
共识算法解读-天下武功唯快不破Conflux共识算法 串行交易引发的吞吐量瓶颈 上次我们讲到GHOST算法,它在中本聪共识的基础上提出的确定主链的算法,在保障了在高吞吐量的同时还保障了安全性(即不容易 ...
- Tamevic's Ctf-Web writeup@实验吧‘天下武功唯快不破’
Tamevic's Ctf-Web writeup@实验吧'天下武功唯快不破' 第一篇wp,希望自己有个好的开始,养成一个好的习惯 url: http://www.shiyanbar.com/ctf/ ...
- 7.天下武功唯快不破
估计提示: 看响应头,我们就去看看 我们发现flag,工具尝试发现base64加密了,而且根据快的,提示需要写代码来获得flag,先解开base64看看 根据文字信息,那就是把红色框里面的内容,用PO ...
- 实验吧 - 天下武功唯快不破
打开提供网站 , 发现页面中提示 : There is no martial art is indefectible, while the fastest speed is the only way ...
- 实验吧 天下武功唯快不破
本题用常规方法无法做出来,一直反馈的页面如下: 我一直在考虑什么叫做能否再快一点?这里获取到FLAG,BASE64解码后用POST方式提交还有更快的方式吗?看了其他人的帖子,发现是我找错方向了.这里的 ...
最新文章
- 黑莓GPRS上网套餐包月 300MB流量 不限CMWAP/CMNET
- Spark配置参数详解
- 你好骚啊......
- 宝塔Linux面板 5.9专业版破解,付费插件安装免费使用,全网首发!
- QQ空间自动点赞脚本1
- 动作捕捉 Motion Capture (Mocap)
- RS232 与 RS485的区别总结
- 泰国大师赛国羽两银收官 林丹决赛不敌骆建佑
- 关于outlook不能发送126邮件的问题
- What Makes a Video a Video :Analyzing Temporal Information in Video Understanding Models and Dataset
- 上海市住房公积金销户提取的步骤
- java(File、IO流)
- Java Applet与Java Application的区别
- 网易域名邮箱支持POP3/SMTP服务
- Floorplan基本概念合集
- linux下配置调试debug
- Keras【极简】ACGAN
- 虚幻四视角移动与场景搭建
- 201709今日头条测试开发校招面经
- 如何进行产品设计,更能激发用户行为
热门文章
- 云计算数据中心运维管理要点
- Namenode服务挂
- 12306崩了,90%的人都用过这三款抢票工具
- 糖友每天早上坚持去做这4件事情控糖事倍功半。
- linux挂载40t硬盘,Centos支持40T磁盘阵列MD1200
- 出售永磁同步电机(pmsm)模型预测控制(MPC)matla b/simulink仿真模型,转速控制,电流控制,转矩控制,有PI矢量控制,直接预测控制(有限集模型预测控制)(这个其中包括做了单矢量和双
- lua知识点-unpack
- 爬虫返回乱码以及解决办法以及锟斤拷、ISO-8859-1转码、#、#x转码、unicode转码,gbk转码,ascii转码
- iphone,ipad,android图片尺寸
- WEB前端开发:轮播图的实现(H5+C3+JavaScript)(JQuery)