ripgrep 的基本语法
rg <pattern> [files/directories]
ripgrep 是什么?
自动考虑 .gitignore
文件,避免搜索无关文件,提高搜索效率支持在多种编码格式下工作,包括 UTF-8、SHIFT_JIS 等 可在压缩文件(如 ZIP 格式)内进行搜索 默认忽略隐藏文件,并通过 .gitignore
加速搜索
安装 ripgrep
Arch Linux: pacman -S ripgrep
Gentoo: emerge sys-apps/ripgrep
Fedora / Red Hat: sudo dnf install ripgrep
openSUSE (15.1 及以后版本): sudo zypper install ripgrep
Debian Buster 及以上版本: sudo apt install ripgrep
使用 ripgrep
linuxi.py
文件中的 linuxmi
关键字:┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ rg linuxmi linuxmi.py
2:# Linux迷 www.linuxmi.com
4:~'echo Hello world!Linux迷 www.linuxmi.com
┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ rg linuxmi linuxmi.com.sh linuxmi.py
linuxmi.com.sh
2:# Linux迷 www.linuxmi.com
linuxmi.py
2:# Linux迷 www.linuxmi.com
4:~'echo Hello world!Linux迷 www.linuxmi.com'
上下文搜索
-C
或 --context
选项,你可以显示匹配行前后的内容。┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ rg -C 2 linuxmi linuxmi.py
1-#! /usr/bin/env zxpy
2:# Linux迷 www.linuxmi.com
3-
4:~'echo Hello world!Linux迷 www.linuxmi.com'
5-
6-file_count = ~'ls -1 | wc -l'
-A
显示匹配行后的内容.┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ rg -A 2 done linuxmi.c
16: printf("Thread %s done!\n", name);
17- return NULL;
18-}
-B
显示匹配行前的内容。┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ rg -B 2 done linuxmi.c
14- }
15-
16: printf("Thread %s done!\n", name);
列号选项
--column
选项会打印匹配文本所在行的列号。┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ rg --column done linuxmi.c
16:25: printf("Thread %s done!\n", name);
-M
或 --max-columns
,它接受一个数字值,表示最大列数。如果某一行的列数超过该值,ripgrep 会提示该行被省略。┌──(linuxmi㉿linuxmi)-[~/www.linuxmi.com]
└─$ rg --max-columns 20 done linuxmi.c
16:[Omitted long line with 1 matches]
其他有用选项
使用 -s
或--case-sensitive
进行区分大小写的搜索使用 -i
或--ignore-case
进行不区分大小写的搜索使用 -j
或--threads
选项,可以在多个线程上并行执行搜索,适合大型代码库使用 -v
或--invert-match
排除特定模式如果你想搜索压缩文件中的文本,可以使用 -z
或--search-zip
选项,常与-a
一起使用,把二进制文件当做文本文件处理
总结
Linux迷
链接:https://www.linuxmi.com/ripgrep.html
关注我们 长按或扫描下面二维码关注 Linux公社
关注 Linux公社,添加“ 星标 ”
每天 获取 技术干货,让我们一起成长
合作联系:root@linuxidc.net