grep 参数    作用
-B 50    显示匹配行的前 50 行(Before)
-A 50    显示匹配行的后 50 行(After)
-C 50    显示匹配行的前后各 50 行(Context),等同于 -B 50 -A 50
docker日志查看
docker logs 7dd1fb17861b | grep -C 50 "error"
# 查看容器最后1000行日志中,包含“iptables”的前后50行
docker logs --tail 1000 7dd1fb17861b | grep -C 50 "iptables"
# 查看2025-12-20 10:00到现在的日志中,包含“failed”的前后50行
docker logs --since "2025-12-20 10:00" 7dd1fb17861b | grep -C 50 "failed"
# 只查看最近1小时的日志,再筛选关键词的前后50行
docker logs --since 1h 7dd1fb17861b | grep -C 50 "error"
# 实时跟踪日志,并显示匹配“error”的前后50行
docker logs --follow 7dd1fb17861b | grep --line-buffered -C 50 "error"

应用日志查看
grep -C 50 "error" sever.log
# 只查看 app.log 最后10000行中,包含“timeout”的前后50行
tail -n 10000 app.log | grep -C 50 "timeout"
# 查看 app.log 中2025-12-20之后的日志,包含“error”的前后50行(适用于按时间戳记录的日志)
grep "2025-12-20" app.log | grep -C 50 "error"
# 筛选2025-12-22 10:00到11:00之间的日志
grep "2025-12-22 10:[0-5][0-9]" app.log
# 筛选2025-12-22当天的日志
grep "2025-12-22" app.log
# 结合awk筛选时间范围(更精准)
awk '/2025-12-22 10:00:00/,/2025-12-22 11:00:00/' app.log
# 实时跟踪 app.log,显示包含“exception”的日志的前后50行
tail -f app.log | grep --line-buffered -C 50 "exception"
若日志被压缩为.gz格式,用zgrep(直接处理压缩文件,用法与grep一致):
# 查看 app.log.gz 中包含“error”的前后50行
zgrep -C 50 "error" app.log.gz
# 统计日志中“ERROR”出现的次数
awk '/ERROR/ {count++} END {print count}' app.log

# 用less打开日志
less app.log
/error  # 向下搜索“error”关键词(按n下一个,N上一个)
?info   # 向上搜索“info”关键词
50k     # 向上翻50行
50j     # 向下翻50行
G       # 跳转到日志末尾
g       # 跳转到日志开头

更多推荐