别再 cat | grep: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,会觉得多出来的那段管道纯属多余。
- 点赞
- 收藏
- 关注作者
评论(0)