常用 grep 选项
常用 grep 选项
- grep:全称是 “Global Regular Expression Print”,意思是“全局正则表达式打印”。它的作用是搜索文本中匹配指定模式的行,并将这些行输出(打印)出来。
| 选项 | 含义 | 示例 |
|---|---|---|
-i |
忽略大小写 | grep -i "error" log.txt |
-v |
反向匹配(显示不包含指定模式的行) | grep -v "success" log.txt |
-n |
显示匹配行的行号 | grep -n "hello" file.txt |
-r 或 -R |
递归搜索目录中的所有文件 | grep -r "password" /home/user/ |
-l |
只列出包含匹配项的文件名 | grep -l "TODO" *.py |
-c |
显示匹配的行数(计数) | grep -c "error" log.txt |
-w |
匹配整个单词(不是部分) | grep -w "cat" file.txt(不会匹配 category) |
-E |
使用扩展正则表达式(或用 egrep) |
`grep -E “error |
-A N |
显示匹配行之后的 N 行 | grep -A 2 "error" log.txt |
-B N |
显示匹配行之前的 N 行 | grep -B 2 "error" log.txt |
-C N |
显示匹配行前后各 N 行(上下文) | grep -C 3 "error" log.txt |
--color |
高亮显示匹配内容(很多系统默认开启) | grep --color "key" file.txt |
🧪 实际例子演示
假设文件 log.txt 内容如下:
1 | 2023-01-01 ERROR: Failed to connect |
示例 1:忽略大小写 + 显示行号
1 | grep -in "error" log.txt |
输出:
1 | 1:2023-01-01 ERROR: Failed to connect |
示例 2:排除包含 “success” 的行
1 | grep -v "success" log.txt |
输出:
1 | 2023-01-01 ERROR: Failed to connect |
示例 3:递归查找所有 .log 文件中包含 “ERROR” 的行
1 | grep -r -i "ERROR" /var/log/*.log |
示例 4:只看哪些文件包含 “TODO”
1 | grep -l "TODO" *.py |
输出可能:
1 | app.py |
示例 5:匹配完整单词 “fail”,避免匹配 “failure”
1 | grep -w "fail" log.txt |
这样就不会把 failure 也算进去。
示例 6:显示匹配行及其前后 2 行(查看上下文)
1 | grep -C 2 "ERROR" log.txt |
输出会包括错误行以及它前后各两行,方便调试。
💡 小技巧
组合使用:可以同时使用多个选项,比如:
1
grep -rin "error" /var/log/
表示:递归、忽略大小写、显示行号地搜索所有
error。配合管道使用:
1
ps aux | grep -i "nginx"
查找进程中是否有
nginx(不区分大小写)。使用正则表达式:
1
grep -E "error|fatal|critical" log.txt
搜索包含
error、fatal或critical的行。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Fleming's Blog!

