grep(Global Regular Expression Print)是 Linux 运维与开发中最基础且强大的文本过滤与代码检索工具。熟练掌握 grep 常用参数组合,可以在数百兆的日志与庞大代码库中毫秒级定位问题根源。本文总结最实用的 grep 实战指令。
一、 最常用的四大黄金参数组合
# 在当前目录及所有子目录下递归检索指定文本,并显示匹配行号与文件名
grep -rnI "DB_PASSWORD" ./-r(Recursive):递归检索所有子目录;-n(Line Number):在输出结果中打印匹配行的行号;-I(Ignore Binary):自动忽略二进制文件(避免控制台被乱码刷屏);-i(Ignore Case):忽略大小写匹配。
二、 日志排查高频场景
1. 查看匹配行前后上下文(排查报错堆栈神技)
# 显示匹配行以及其后的 5 行(After)
grep -A 5 "NullPointerException" /var/log/nginx/error.log
# 显示匹配行以及其前的 5 行(Before)
grep -B 5 "Fatal Error" /var/log/app.log
# 显示匹配行前后各 3 行(Context)
grep -C 3 "502 Bad Gateway" /var/log/nginx/access.log2. 排除特定内容(反向过滤)
# 查看进程列表,并排除 grep 自身进程
ps aux | grep node | grep -v grep