Ripgrep在Linux命令行下是一个基于行的文本搜索工具,我们可以下载RipGrep 0.10.0并安装使用RipGrep,其搜索速度相比同类工具相当的快,VSCode从1.11版本开始就默认把RipGrep做为其搜索的工具,因为它的速度超快,功能又强大。RipGrep采用Rust开发,可以在MacOS、Linux及Windows多平台中运行,还针对Linux平台推出tar.gz、deb安装包,当前版本是RipGrep 0.10.0。它和The Silver Searcher、Ack、GNU Grep功能相似。
Ripgrep支持的一些特性 自动递归搜索 (grep 需要 -R)。 自动忽略 .gitignore 中的文件以及二进制文件和隐藏文件。 可以搜索指定文件类型,如:rg -tpy foo 则限定只搜索 Python 文件,rg -Tjs foo 则排除掉 JS 文件。 支持大部分 Grep 的 特性,例如:显示搜索结果的上下文、支持多个模式搜索、高亮匹配的搜索结果以及支持 Unicode 等。 支持各种文本编码格式,如:UTF-8、UTF-16、latin-1、GBK、EUC-JP、Shift_JIS 等。 支持搜索常见格式的压缩文件,如:gzip、xz、lzma、bzip2、lz4 等。 自动高亮匹配的结果。
Ripgrep效果图
相关链接
安装Ripgrep的方法 Ripgrep具有跨平台特性,支持在Linux、macOS、Windows等多种平台下安装。官方也提供了各平台对应的二进制版本,下面我们以Linux平台为例使用二进制版本进行安装。 $ wget https://github.com/BurntSushi/ripgrep/releases/download/0.10.0/ripgrep-0.10.0-x86_64-unknown-linux-musl.tar.gz $ tar xzvf ripgrep-0.10.0-x86_64-unknown-linux-musl.tar.gz $ cp ripgrep-0.10.0-x86_64-unknown-linux-musl/rg /usr/local/bin/
其它Linux平台安装参考 1.If you're an Arch Linux user, then you can install ripgrep from the official repos: $ pacman -S ripgrep 2.If you're a Gentoo user, you can install ripgrep from the official repo: $ emerge sys-apps/ripgrep 3.If you're a Fedora 27+ user, you can install ripgrep from official repositories. $ sudo dnf install ripgrep 4.If you're a Fedora 24+ user, you can install ripgrep from copr: $ sudo dnf copr enable carlwgeorge/ripgrep $ sudo dnf install ripgrep 5.If you're an openSUSE Tumbleweed user, you can install ripgrep from the official repo: $ sudo zypper install ripgrep 6.If you're a RHEL/CentOS 7 user, you can install ripgrep from copr: $ sudo yum-config-manager --add-repo=https://copr.fedorainfracloud.org/coprs/carlwgeorge/ripgrep/repo/epel-7/carlwgeorge-ripgrep-epel-7.repo $ sudo yum install ripgrep 7.If you're a Nix user, you can install ripgrep from nixpkgs: $ nix-env --install ripgrep $ # (Or using the attribute name, which is also ripgrep.) 8.If you're a Debian user (or a user of a Debian derivative like Ubuntu), then ripgrep can be installed using a binary .deb file provided in each ripgrep release. $ curl -LO https://github.com/BurntSushi/ripgrep/releases/download/0.10.0/ripgrep_0.10.0_amd64.deb $ sudo dpkg -i ripgrep_0.10.0_amd64.deb 9.If you run Debian Buster (currently Debian testing) or Debian sid, ripgrep is officially maintained by Debian. $ sudo apt-get install ripgrep 10.If you're an Ubuntu Cosmic (18.10) (or newer) user, ripgrep is available using the same packaging as Debian: $ sudo apt-get install ripgrep
Ripgrep语法格式 USAGE: rg [OPTIONS] PATTERN [PATH ...] rg [OPTIONS] [-e PATTERN ...] [-f PATTERNFILE ...] [PATH ...] rg [OPTIONS] --files [PATH ...] rg [OPTIONS] --type-list command | rg [OPTIONS] PATTERN ARGS: <PATTERN> A regular expression used for searching. To match a pattern beginning with a dash, use the -e/--regexp flag. For example, to search for the literal '-foo', you can use this flag: rg -e -foo You can also use the special '--' delimiter to indicate that no more flags will be provided. Namely, the following is equivalent to the above: rg -- -foo <PATH>... A file or directory to search. Directories are searched recursively. Paths specified on the command line override glob and ignore rules.
支持的命令行选项 这里我们把一些常用选项做下介绍:
注:更多命令行选项,可通过 rg --help 自行查看。
Ripgrep使用举例 1.搜索指定文件中包含以关键字开头的单词的内容 $ rg 'langw+' README.md 154:### Multiple languages support, including: 168:Default language is English. 171:language: en 172:# language: zh-Hans 173:# language: zh-hk 174:# language: zh-tw 175:# language: ru 176:# language: fr-FR 177:# language: de 178:# language: ja 179:# language: id 180:# language: pt 181:# language: pt-BR 2.使用正则表达式进行关键字搜索 $ rg -e "noConf.*lict" ./ ./js.cookie.js 21: api.noConflict = function () { ./scrollspy.js 166: $.fn.scrollspy.noConflict = function () { ./affix.js 139: $.fn.affix.noConflict = function () { 3.搜索不包含关键字的内容 $ rg -v "hexo" merge-configs.js 2: 3:var merge = require('./merge'); 4: 5:/** 8: */ 12: if ( data && data.next ) { 13: if ( data.next.override ) { 15: } else { 17: } 18: } 19: } 20:}); 21: 30:}); 4.搜索关键字并只显示关键字部分的内容 $ rg -e "hexo.*warn" -o ./ ./tags/lazy-image.js 12:hexo.log.warn ./merge-configs.js 23:hexo.log.warn 24:hexo.log.warn 25:hexo.log.warn 26:hexo.log.warn 27:hexo.log.warn 28:hexo.log.warn 29:hexo.log.warn ./tags/button.js 13:hexo.log.warn ./tags/full-image.js 12:hexo.log.warn 5.打印当前目下所有将被搜索的文件列表 $ rg --files merge.js merge-configs.js tags/lazy-image.js tags/center-quote.js tags/tabs.js tags/note.js tags/button.js tags/full-image.js tags/group-pictures.js tags/label.js tags/exturl.js
RipGrep自动补全功能 RipGrep提供的二进制包中默认提供了SHELL自动补全功能,只需根据不同SHELL放到对应目录即可使用了。 1.Bash $ mv rg.bash $XDG_CONFIG_HOME/bash_completion/ 或者 $ mv rg.bash /etc/bash_completion.d/ 2.ZSH $ mv _rg $fpath/ 3.Fish $ mv rg.fish $HOME/.config/fish/completions/
Ripgrep性能测试结果参考 1.搜索整个Linux内核源代码
2.在单个大文件上对Ripgrep与GNU Grep进行比较,文件大小大约9.3G
相关主题 |