别再 cat | grep:ripgrep 的四个日常用法

举报
yiboyun 发表于 2026/11/07 09:09:39 2026/11/07
【摘要】 别再 cat | grep:ripgrep 的四个日常用法标题:别再 cat | grep:ripgrep 的四个日常用法标签:Linux原创:是在服务器上查日志、找配置、定位报错,最常用的组合往往是 cat file | grep keyword。这组命令能用,但有两个毛病:先把整个文件读出来再过滤,慢;而且默认会翻进 .git、依赖目录和二进制文件,结果又多又乱。ripgrep(命令是...

别再 cat | grep:ripgrep 的四个日常用法

标题:别再 cat | grep:ripgrep 的四个日常用法
标签:Linux
原创:是

在服务器上查日志、找配置、定位报错,最常用的组合往往是 cat file | grep keyword。这组命令能用,但有两个毛病:先把整个文件读出来再过滤,慢;而且默认会翻进 .git、依赖目录和二进制文件,结果又多又乱。ripgrep(命令是 rg)就是为这件事生的:默认按 .gitignore 跳过无关文件、自动跳过二进制、输出带行号和高亮,多数场景下比 grep 快得多。

1. 先装,再忘掉 cat | grep

Debian/Ubuntu 用 sudo apt install ripgrep,Alpine 用 apk add ripgrep,macOS 用 brew install ripgrep。装好之后,原来这样写:

cat /var/log/nginx/error.log | grep "502"

改成这样:

rg "502" /var/log/nginx/error.log

rg 后面直接跟关键词和路径,不用管道,也不用先 cat。默认输出就带文件名和行号,翻到结果直接按行号去看上下文。

2. 在项目里只搜源码,别搜依赖

在代码目录里搜一个函数名,grep -r 常常把 node_modules、.git、编译产物一起翻出来。rg 默认遵守 .gitignore,只搜你真正关心的文件:

rg "render_markdown" .

如果想再收紧一点,只搜 Python 文件:

rg "render_markdown" -g "*.py"

反过来,想连被忽略的文件也搜,用 --no-ignore;想搜隐藏文件,用 --hidden。默认行为已经够用,大多数时候不用加参数。

3. 看上下文,别只看一行

只看到匹配的那一行,常常猜不出原因。-C 可以同时看上下各几行,-A 只看后面,-B 只看前面:

rg -C 3 "Traceback" app.log

查报错时这招最实用:先用 rg "ERROR" app.log 定位时间点,再用 -C 5 把前后日志一起拉出来,基本能拼出完整的调用链。配合 --max-count 5 还能只取前 5 个匹配,避免大文件刷屏。

4. 替换之前,先用 rg 数一数

改配置、重命名变量之前,先确认影响范围。rg -c 只统计每个文件的匹配数,不输出具体行:

rg -c "old_api_key" /etc/myapp/

看到哪些文件命中、命中几次,再决定是逐个改还是批量替换。批量替换可以用 rg -l 只列出文件名,交给 sed 或编辑器处理;不要直接在管道里把 rg 的输出喂给 rm 之类危险命令,先看清再动手。

小结

rg 关键词 路径 替代 cat | grep,-g 限定文件类型,-C 看上下文,-c 先数再改。四个用法都不需要记复杂参数,装一次就能一直用。习惯之后再回头看 cat file | grep,会觉得多出来的那段管道纯属多余。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。