1. 12个常用且高频的 grep 命令行组合技巧 ,覆盖大部分实际生产场景
1.1 最简单查找
grep "ERROR" /var/log/messages
这是精确查找方式,查找日志里所有包含 ERROR 的行。
1.2 忽略大小写
grep -i "error" /var/log/messages
这是模糊查找方式, -i 参数可以忽略大小写。无论 error 、 Error 、 ERROR 都能搜到。
1.3 显示行号 + 高亮
grep -ni --color=auto "ERROR" /data/tomcat/logs/catalina.out
-n 带行号输出、带高亮,快速定位问题行。
1.4 统计关键字出现次数
grep -c "ERROR" /var/log/messages
输出匹配总次数,而不是具体内容。
1.5 排除干扰信息
grep "ERROR" /var/log/messages | grep -v "DEBUG"
先匹配 ERROR ,再过滤掉 DEBUG 行。 在复杂日志里很常用。
1.6 多关键字组合
grep -E "ERROR|WARN" /var/log/messages
同时查找 ERROR 或 WARN 。
1.7 抽取关键部分
grep -o "ERROR.*" /data/tomcat/logs/catalina.out
只输出匹配片段,比如提取 ERROR 开头的报错内容。
1.8 搜索整个目录
grep -ir "" ./logs
-r 参数是遍历当前目录及目录下所有文件,在代码目录里递归搜索标记。
1.9 限定文件类型
grep -ir --include="*.log" "Logger" ./logs
只搜 .log 文件,避免无关文件干扰。
1.10 查看上下文
grep -C 3 "ERROR" catalina.out
匹配结果前后各显示 3 行上下文。 组合:
-A N 只看后面 N 行
-B N 只看前面 N 行
1.11 实时过滤日志
tail -f catalina.out | grep "ERROR"
生产环境实时盯报错。 组合增强版:
tail -f catalina.out | grep -E "ERROR|WARN" | grep -v "DEBUG"
实时只看 ERROR/WARN ,过滤掉 DEBUG,清爽很多。
1.12 结合 find 精确搜索
find ./ -name "*.log" | xargs grep "OutOfMemory"
在所有 .log 文件里查找 OutOfMemory 报错。