# 别再无脑敲 grep 了,我靠这 5 个选项,定位问题速度提升 10 倍 在日常运维工作中,我们几乎每天都在和日志、配置文件、代码片段打交道。 日志动辄几十 GB,配置文件成百上千行,出问题时,时间永远是最宝贵的资源。 ![图片](https://mmbiz.qpic.cn/mmbiz_jpg/RM9Y4OF1SX5OHeNFZFN9hDslQrhUfskobg63D6pWb1EfFWrR3OoHqHh7qUaEFXpPe1p5XrAO4jS9Rb980pprdw/640?wx_fmt=jpeg&from=appmsg&wxfrom=13&tp=wxpic#imgIndex=1) 很多同事都会用 grep,但**90% 的人只会用最基础的 grep "keyword" file**。 结果就是: - 要么匹配不准 - 要么结果一大堆 - 要么漏掉关键信息 今天这篇文章,我不讲 grep 的所有参数,而是分享**我在一线运维工作中,真正高频使用、最有价值的 5 个 grep 选项**。 只要你把这 5 个选项用熟,**你几乎可以在任何复杂场景下,快速定位你想要的内容**。 在进入正题之前,先统一一个认知。 grep 是什么? > grep = Global Regular Expression Print 但在运维眼里,它的真实含义是: - 日志分析利器 - 故障定位放大镜 - 海量文本的“手术刀” 无论你是: - 查 Nginx / Tomcat / MySQL 日志 - 翻 Kubernetes 容器日志 - 排查线上报错 - 审计配置变更 - 甚至简单查代码 **grep 几乎是第一反应。** ## 我最常用的 5 个 grep 选项总览 先给大家一个总览,后面逐个展开。 |选项|作用|使用频率| |---|---|---| |`-n`|显示行号|⭐⭐⭐⭐⭐| |`-i`|忽略大小写|⭐⭐⭐⭐| |`-v`|反向匹配|⭐⭐⭐⭐⭐| |`-C / -A / -B`|上下文查看|⭐⭐⭐⭐| |`-E`|扩展正则|⭐⭐⭐⭐⭐| 这 5 个选项,**几乎覆盖了我 80% 的 grep 使用场景**。 ## 行号 ### 1️⃣ 基本用法 ``` grep -n "error" application.log ``` 输出类似: ``` 2451:2024-06-01 10:23:11 ERROR Connection timeout ``` ### 2️⃣ 为什么我几乎永远带 `-n` 原因很简单:**行号 = 定位能力**。 - 你要和同事对齐信息 - 你要回到文件中继续分析 - 你要用 sed / vim / awk 二次处理 **没有行号,等于失去坐标。** ### 3️⃣ 实战场景 - 让开发快速定位代码或日志位置 - 在 vim 里 `:2451` 直接跳转 - 用 sed 精确截取问题区间 只要 grep 文件,我几乎条件反射就加 -n ## `-i`:别让大小写浪费你的时间 ### 1️⃣ 基本用法 ``` grep -i "error" app.log ``` 等价于: - error - Error - ERROR - eRrOr ### 2️⃣ 真实痛点 你一定遇到过这种情况: ``` grep "error" app.log# 什么都没匹配到 ``` 结果一看日志,全是: ``` ERROR ``` ### 3️⃣ 运维经验 - 日志格式不统一 - 不同组件输出风格不同 - 第三方程序你根本控制不了 **与其记大小写,不如让 grep 忽略它。** ### 4️⃣ 建议 > **查日志时,只要关键词是英文,我几乎都会加 -i** ## `-v`:排除干扰信息,快速聚焦重点 ### 1️⃣ `-v` 是什么 ``` grep -v "info" app.log ``` 含义是:**显示不包含 info 的行** ### 2️⃣ 为什么 `-v` 在运维中非常重要 日志里最常见的是什么? - INFO - DEBUG - 心跳日志 - 健康检查 但我们真正关心的,往往只有: - ERROR - WARN - Exception ### 3️⃣ 经典组合用法 ``` grep -i "error" app.log | grep -v "timeout" ``` 含义是: > 查 error,但排除已知的、无关的 timeout 错误 ### 4️⃣ 实战案例 排查线上告警: ``` grep -i "error" app.log | grep -v "connection reset" ``` **瞬间把 90% 的“噪音”过滤掉。** -v 是 grep 的“降噪耳机” ## `-C / -A / -B`:只看一行,等于没看日志 ### 1️⃣ 为什么只看一行日志是不够的 一条 ERROR 往往是这样的: - 前几行:请求参数 - 当前行:错误提示 - 后几行:堆栈信息 如果你只看命中那一行,**信息是不完整的**。 ### 2️⃣ 常用参数说明 - `-A n`:显示匹配行 **后 n 行** - `-B n`:显示匹配行 **前 n 行** - `-C n`:显示前后各 n 行 ### 3️⃣ 实战示例 ``` grep -n -C 5 "NullPointerException" app.log ``` 输出的不是一行,而是一个**完整上下文块**。 ### 4️⃣ 典型使用场景 - Java 堆栈分析 - 请求链路排查 - 分析程序执行路径 grep + 上下文,才是真正的“读日志” ## `-E`:让 grep 真正“强大”的关键 ### 1️⃣ 什么是 `-E` `-E` 启用 **扩展正则表达式**,让 grep 支持: - `|`(或) - `+` - `?` - `()` 分组 ### 2️⃣ 没有 `-E` 的痛苦 ``` grep "error|warn" app.log# 匹配不到 ``` ### 3️⃣ 正确用法 ``` grep -E "error|warn|exception" app.log ``` ### 4️⃣ 高频实战场景 一次查多种关键字: ``` grep -Ei "error|fail|timeout" app.log ``` 匹配 IP: ``` grep -E "([0-9]{1,3}\.){3}[0-9]{1,3}" access.log ``` 只要涉及“多条件匹配”,我直接上 -E ## 我最常用的 grep 组合拳 最后分享几个我在生产环境里**天天用的组合命令**。 ### 1️⃣ 查错误并带上下文 ``` grep -in -C 5 "error" app.log ``` ### 2️⃣ 查错误,排除已知无关问题 ``` grep -Ei "error|exception" app.log | grep -v "timeout" ``` ### 3️⃣ 查最近错误(配合 tail) ``` tail -n 1000 app.log | grep -i "error" ``` ![图片](https://mmbiz.qpic.cn/mmbiz_gif/RM9Y4OF1SX5XhQUbo4olZCcxb5hTByomPsrenaH3ZhKcgQSIs0kQXbgMvwEz10eyxqICaol72LVWTbicKZGCSSg/640?wx_fmt=gif&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1#imgIndex=2) **大事!运维漫谈-技术交流群对外开放!** 扫码可添加小编微信,**申请进****群** ![图片](https://mmbiz.qpic.cn/mmbiz_png/RM9Y4OF1SX5XhQUbo4olZCcxb5hTByomDjtGvbs0jkgfC5qdpeOibicJ1IwoUibyzovnkkMkTg5EYSIIJia8W4guoQ/640?wx_fmt=png&from=appmsg&tp=wxpic&wxfrom=5&wx_lazy=1#imgIndex=3) ▲长按加群 ![](http://mmbiz.qpic.cn/mmbiz_png/RM9Y4OF1SX5ASLKxja0ObTV9vdZwcsdFADfftKnMeb7DS85FhSs8ZmKb0jf39U7IPNUicDt2yeHBsUSUj1ogiaWw/300?wx_fmt=png&wxfrom=19) **运维漫谈** 运维漫谈,漫谈整个网络安全、云计算、大数据、数据库、开发等运维技术干货,旨在分享干货,帮您更快学习相关知识,解决问题,同时还有福利活动哦,关注我,带你成为大神,遨游技术海洋! 922篇原创内容 公众号 ![图片](https://mmbiz.qpic.cn/mmbiz_gif/RM9Y4OF1SX7kdQVRP5vWRpjNrNTjndnRJcvictBxxgqovlG2iau6pcBaSk6fhIGfhUwZobImYJssgcX0qbiaTowxg/640?wx_fmt=gif&tp=wxpic&wxfrom=5&wx_lazy=1#imgIndex=4) Linux · 目录 上一篇这6个工具,让你的Linux监控如鱼得水,运维效率翻倍!下一篇如何查看 Ubuntu 服务器到底什么时候重启的? 阅读 3351 grep上下文参数 ​ **留言 1** 写留言 - ![](https://wx.qlogo.cn/mmopen/BpFYwrSatCickbsJuTwvHf5ASYXbKSyQYTTX9xYzj2eBNCPx7NnGjsTUoiciaAVNZjiass6MBmA1Nymw3kyMyNbwO87ibhJ1rzTcwhhW5kAffMEvia3cEibnrBiaoDI1g4icDBne9/64) 亮 北京23小时前 赞 grep -Rni 已无更多数据 [](javacript:;) ![](https://mmbiz.qpic.cn/mmbiz_png/RM9Y4OF1SX5ASLKxja0ObTV9vdZwcsdFADfftKnMeb7DS85FhSs8ZmKb0jf39U7IPNUicDt2yeHBsUSUj1ogiaWw/300?wx_fmt=png&wxfrom=18) 运维漫谈 关注 76 295 58 1 ![](https://wx.qlogo.cn/mmopen/PiajxSqBRaEIFbetu020KHTmFaHibhvXCAOkgwT2u7pHbvyJSmY4m3cjqr1AqiaT55soKLk7YhT5v7hJscgmsc2bg/96) 复制搜一搜 复制搜一搜 暂无评论