欢迎来到程序员中文网!

首页 Linux Mysql C++ Python PHP JavaScript 资源下载 动态 开源推荐
我要投稿 投诉建议

grep 与正则表达式:日志分析实战技巧

时间:2026年08月12日 05:26:48 浏览:1

grep 与正则表达式:日志分析实战技巧


grep 是日志分析的必备工具,结合正则表达式可实现精准过滤。


1. 基础用法


# 简单搜索
grep "ERROR" app.log

# 忽略大小写
grep -i "warning" *.log

# 显示行号
grep -n "Exception" app.log

# 显示匹配上下文
grep -B 2 -A 3 "NullPointer" app.log # 前2行后3行

2. 扩展正则 ( -E / egrep)


# 匹配 IP 地址(使用 [.] 代替 \.)
grep -E '([0-9]{1,3}[.]){3}[0-9]{1,3}' access.log

# 匹配邮箱(使用 [.] 代替 \.)
grep -E '[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+[.][A-Z|a-z]{2,}' contacts.txt

# 匹配日期 (YYYY-MM-DD)
grep -E '[0-9]{4}-[0-9]{2}-[0-9]{2}' app.log

3. 统计与过滤


# 统计错误次数
grep -c "ERROR" app.log

# 统计不同错误类型
grep -o "ERROR:.*" app.log | sort | uniq -c | sort -nr

# 排除特定行
grep -v "DEBUG" app.log

4. 组合 find 与 xargs


# 在所有 .log 文件中搜索 "500"
find /var/log -name "*.log" -exec grep -l "500" {} \;

# 使用 xargs 并行搜索
find . -name "*.log" | xargs grep "Fatal"

5. 性能优化



  • 使用 -F 禁用正则(纯字符串搜索)加速。

  • 大文件先 grep 再管道。

  • 使用 --mmap(已废弃)或 --direct-io 但一般无需。