不知道大家有没有和我类似的困扰。在大项目下用grep过滤关键字实在太久了。在一顿搜索下,终于找到了ripgrep工具。在这里简单记录下,我对这个工具的探索,不断更新…,相信不久后就会有各种高效玩法。
ripgrep介绍
ripgrep是一个基于Rust编写的高效文本以行为单位的搜索工具搜索工具,用于在文件中快速查找匹配的文本。它具有类似于grep的功能,但在性能方面更加出色。与同类工具相比,最大的优点就是快。话不多说直接上图:
还有其他特点如下:
- 自动递归搜索 (grep 需要-R)
- 自动忽略.gitignore 中的文件以及 2 进制文件
- 可以搜索指定文件类型(rg -tpy foo限定 python 文件, rg -Tjs foo排除 js 文件)
- 高速搜索:ripgrep使用多线程和其他优化技术,以实现快速的搜索速度。
- 默认忽略版本控制和隐藏文件:ripgrep默认会忽略版本控制系统和隐藏文件,以提高搜索效率。
- 跨平台支持:ripgrep可在Linux、Mac和Windows等多个操作系统上运行。
感兴趣的朋友,可以直接去github ripgrep官网直接查看更多细节
ripgrep下载
我觉得网上现在的方法都多多少少会遇到各式各样的问题。我亲测了一种下载方式。macos和linux都适用。
当然也可以在ripgrep官网下载
1、先安装 RUST
curl https://sh.rustup.rs -sSf | sh
然后一路回车后,执行
source "$HOME/.cargo/env"
2、用 RUST 安装 ripgrep
git clone https://github.com/BurntSushi/ripgrep
cd ripgrep
cargo build --release
sudo cp ./target/release/rg /usr/local/bin/
注意事项:
1、-bash: cargo: command not found
确认一下,是否没有执行source "$HOME/.cargo/env"
ripgrep的使用
与条件过滤
rg "test" | rg "tag"
或条件过滤
rg "xxx|xxx"
搜索独立单词的内容(-w)
rg xxx -w
忽略大小写
rg xxx -i
显示上下文
rg -i gtssecurityhosttestcases -C3
指定过滤文件类型
rg xxx -t(文件类型)
过滤当前路径下所有特定文件格式中的字符
rg -g "*.rs" 'test