云网牛站
所在位置:首页 > Linux软件 > RipGrep 0.10.0下载及安装使用:命令行下超快的文本搜索工具

RipGrep 0.10.0下载及安装使用:命令行下超快的文本搜索工具

2018-09-18 11:54:14作者:大力稿源:云网牛站

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 0.10.0下载及安装使用:命令行下超快的文本搜索工具

 

相关链接

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.

 

支持的命令行选项

这里我们把一些常用选项做下介绍:

选项

说明

备注

-A, --after-context <NUM>

显示匹配内容后的 <NUM> 行。

会覆盖 --context 选项。

-B, --before-context <NUM>

显示匹配内容前的 <NUM> 行。

会覆盖 --context 选项。

-b, --byte-offset

显示匹配内容在文件中的字节偏移。

-o 一起使用时只打印偏移。

-s, --case-sensitive

启用大小写敏感。

会覆盖 -i(--ignore case)-S(--smart case) 选项。

–color <WHEN>

什么时候使用颜色,默认值为:auto。可选值有:never、auto、always、ansi。

如果 --vimgre 选项被使用,那么默认值是 never。

–column

显示匹配所在列数 (从 1 开始)。

如果不显示列号可用 --no-column 取消掉。

-C, --context <NUM>

显示匹配内容的前面和后面的 <NUM> 行。

该选项会覆盖 -B-A 选项。

–context-separator <SEPARATOR>

在输出结果中分隔非连续的输出行 。

可以使用 ,默认是 --

-c, --count

只显示匹配结果的总行数。

如果只有一个文件给 Ripgrep,那么只打印匹配结果的总行数。可以用 --with-filename 来强制打印文件名,该选项会覆盖 --count-matches 选项。

–count-matches

只显示匹配结果的总次数。

可以用 --with-filename 来强制在只有一个文件时也输出文件名。

–debug

显示调试信息。

 

–dfa-size-limit <NUM+SUFFIX?>

指定正则表达式 DFA 的上限,默认为 10M。

该选项允许接受与 --max-filesize 相同大小的后缀标志。

-E, --encoding <ENCODING>

指定文本编码格式, 默认是 auto。

 

-f, --file <PATTERNFILE>

从文件中读入搜索模式, 一行一个模式。

结合 -e/--regexp 参数可多个文件一起组合使用,所有组合会被匹配。

–files

打印所有将被搜索的文件路径。

rg <options> --files [PATH...] 方式使用,不能增加搜索模式。

-l, --files-with-matches

只打印有匹配的文件名。

该选项会覆盖 --files-without-match

–files-without-match

只打印无匹配的文件名。

该选项会覆盖 --file-with-matches

-F, --fixed-strings

把搜索模式当成常规文字而非正则表达式。

该选项可以用--no-fixed-strings 来禁止。

-L, --follow

该选项会递归搜索符号链接,默认是关闭的。

该选项可以用 --no-follow 选项来手动关闭。

-g, --glob <GLOB>

包含或排除用于搜索匹配给定的文件和目录,可以用 ! 来取反。

该选项可以多次使用,会匹配 .gitignore 中的规则。

-h, --help

打印帮助信息。

 

–heading

打印文件名到匹配内容的上方而不是在同一行。

该选项是默认启用的,可以用 --no-heading 来关闭。

–hidden

启用搜索隐藏文件和文件夹。

默认情况下是忽略搜索隐藏文件和文件夹的, 可用 --no-hidden 来关闭。

–iglob <GLOB>

作用同 --glob, 但这个选项大小写不敏感。

 

-i, --ignore-case

指定搜索模式中的大小写不敏感。

该选项会被 -s/--case-sensitive-S/--smart-case 覆盖。

–ignore-file <PATH>

指定搜索时需忽略的路径,格式同 .gitignore, 可同时指定多个。

如果存在多个 --ignore-file 标记时,后面优先级会更高。

-v, --invert-match

反向匹配,显示与给定模式不匹配的行。

 

-n, --line-number

显示匹配内容所在文件的行数,该选项默认是打开的。

 

-x, --line-regexp

只显示整行都匹配搜索模式的行。

该选项会覆盖 --word-regexp

-M, --max-columns <NUM>

不打印长于 <NUM> 中指定节字大小的匹配行内容,只显示该行的匹配数。

 

-m, --max-count <NUM>

限制一个文件中最多 <NUM> 行被匹配。

 

–max-depth <NUM>

限制文件夹递归搜索深度。

如:rg --max-depth 0 dir/ 则表示不执行任何搜索。

–max-filesize <NUM+SUFFIX?>

搜索时忽略大于 <NUM> byte 的文件。

SUFFIX 的单位可以是:K、M、G,默认是:byte。

–mmap

尽量使用 Memory Maps 进行搜索,这样速度会更快。该选项是默认行为。

如果使用 --mmap 搜索文件时 Ripgrep 发生意外中止,可使用 --no-mmap 选项关闭它。

–no-config

不读取 configuration 文件, 并忽略 RIPGREP_CONFIG_PATH 变量。

 

–no-filename

不要打印匹配文件的文件名。

 

–no-heading

不在每个匹配行上方打印文件名,而是在匹配行的同一行上打印。

 

–no-ignore

不读取忽略文件,如:.gitignore、.ignore 等。

该选项可以用 --ignore 关闭。

–no-ignore-global

不读取全局的 ignore 文件,比如: $HOME/.config/git/ignore

该选项可以用 --ignore-global 关闭。

–no-ignore-messages

取消解析 .ignroe、.gitignore 文件中相关错误信息。

该选项可通过 --ignore-messages 关闭。

–no-ignore-parent

不读取父文件夹里的 .gitignore、.ignore 文件。

该选项可通过 --ignore-parent 关闭。

–no-ignore-vcs

不读取版本控制器中的 .ignore 文件。

该选项可通过 --ignore-vcs 关闭。

-N, --no-line-number

不打印匹配行数。

 

–no-messages

不打印打开和读取文件时相关错误信息。

 

-0, --null

在打印的文件路径后加一个 NUL 字符。

这对于结合 Xargs 使用时是非常有用的。

-o, --only-matching

只打印匹配的内容,而不是整行。

 

–passthru

同时打印文件中匹配和不匹配的行。

 

–path-separator <SEPARATOR>

路径分隔符,在 Linux 上默认是 /,Windows 上默认是 。

 

–pre <COMMAND>

<COMMAND> 处理文件后,并将结果传递给 Ripgrep。

该选项存在一定的性能损耗。

-p, --pretty

该选项是 --color always --heading --line-number 的别名。

 

-q, --quiet

该选项不会打印到标准输出, 如果匹配发现时就停止搜索。

当 RipGrep 用于 exit 代码时该选项非常有用。

–regex-size-limit <NUM+SUFFIX?>

设置已编译正则表达式的上限,默认限制为10M。

 

-e, --regexp <PATTERN>

使用正则来匹配搜索条件。

该选项可以多次使用,可打印匹配任何模式的行。

-r, --replace <REPLACEMENT_TEXT>

用相应文件内容代替匹配内容打印出来。

 

-z, --search-zip

在 gz、bz2、xz、lzma、lz4 文件类型中搜索。

该选项可通过 --no-search-zip 关闭。

-S, --smart-case

如果全小写,则大小写不敏感,否则大小写敏感。

该选项可通过 -s/--case-sensitive-i/--ignore-case 来关闭。

–sort <SORTBY>

将输出结果按升序进行排序,可排序类型有:path、modified、accessed、created 。

 

–sortr <SORTBY>

将输出结果按降序进行排序,可排序类型有:path、modified、accessed、created 。

 

–stats

打印出统计结果。

 

-a, --text

搜索二进制文件。

该选项可通过 --no-text 关闭。

-j, --threads <NUM>

搜索时要使用的线程数。

 

-t, --type <TYPE>

只搜索指定的文件类型。

可以通过 --type-list 来列出支持的文件类型。

–type-add <TYPE_SPEC>

添加一种文件类型。

 

–type-clear <TYPE>

清除默认的文件类型。

 

–type-list

列出所有内置文件类型。

 

-T, --type-not <TYPE>

不要搜索某种文件类型。

 

-u, --unrestricted

-u 搜索.gitignore 里的文件, -uu 搜索隐藏文件,-uuu 搜索二进制文件。

 

-V, --version

打印版本信息。

 

–vimgrep

每一次匹配都单独打印一行,如果一行有多次匹配会打印成多行。

 

-H, --with-filename

打印匹配的文件路径,该选项默认打开。

该选项可通过 --no-filename 关闭。

-w, --word-regexp

把搜索参数作为单独单词匹配。

该选项会覆盖 --line-regexp 选项。

注:更多命令行选项,可通过 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内核源代码

RipGrep 0.10.0下载及安装使用:命令行下超快的文本搜索工具

2.在单个大文件上对Ripgrep与GNU Grep进行比较,文件大小大约9.3G

RipGrep 0.10.0下载及安装使用:命令行下超快的文本搜索工具

 

相关主题

FD:要比find快上10倍的命令行搜索工具(附安装及使用方法)

精选文章
热门文章