grep
grep 是一个强大的文本搜索工具,支持正则表达式。常用选项:
-i:忽略大小写-r:递归搜索-v:反向匹配-n:显示行号
示例:
# 忽略大小写
grep -i "error" /var/log/syslog
# 检查查找
grep "ERROR" /var/log/messages
# 显示行号+高亮
grep -ni --color=auto "ERROR" /data/tomcat/logs/catalina.out
# 统计关键字出现次数
grep -c "ERROR" /var/log/messages
# 排除
grep "ERROR" /var/log/messages | grep -v "DEBUG"
# 检索多关键字
grep -E "ERROR|WARN" /var/log/messages
egrep "ERROR|WARN" /var/log/messages
# 抽取关键部分
grep -o "ERROR.*" /data/tomcat/logs/catalina.out
# 检索整个目录
# -r参数是遍历当前目录及目录下所有文件,在代码目录里递归搜索 https://www.liyb.com 标记。
grep -ir "https://www.liyb.com" ./logs
# 限定文件类型
grep -ir --include="*.log" "Logger" ./logs
# 查看上下文
# 匹配结果前后各显示 3 行上下文。
# 组合:-A N 只看后面 N 行
# -B N 只看前面 N 行
grep -C 3 "ERROR" catalina.out
# 实时过滤
tail -f catalina.out | grep "ERROR"
# 在所有 .log 文件里查找 OutOfMemory 报错
find ./ -name "*.log" | xargs grep "OutOfMemory"
# 查看指定时间段的日志
sed -n '/Apr 8 20:24:09/,/Apr 8 20:27:41/p' /var/log/syslog
awk
原理
参数
示例
## 过滤日志中某个时间段的内容
# 例如查看 2023年4月8日20:22:05 到 2023年4月8日20:27:41 的日志
awk '/^Apr 8 20:22:05*/,/^Apr 8 20:27:41*/' /var/log/syslog