先唠两句大家好啊我是阿垚。欢迎来到《每日一命令》第01期。这个专栏每天3分钟掌握一个命令行神器。不讲长篇大论只挑最实用、最容易被忽略的命令。今天是第01期聊一个所有程序员都离不开的命令grep 你是不是也这么干过打开日志文件按CtrlF输入关键词一个个翻页找。文件小还好文件一大比如几百MB的日志编辑器直接卡死。更惨的是你要在100个日志文件里找同一个关键词——一个个打开一个个搜搜到怀疑人生。这时候grep就是你的救星。 grep是什么grep是 Linux/Unix 下的文本搜索工具全称是Global Regular Expression Print。翻译成人话在文件里快速找内容支持正则表达式秒出结果不用打开文件。 最常用的5种姿势1. 基础搜索找关键词bashgrep error app.log在 app.log 中搜索所有包含 error 的行。一秒出结果不用打开文件。2. 忽略大小写bashgrep -i error app.log不管是大写 ERROR、小写 error、还是混合 eRrOr全找出来。3. 显示行号bashgrep -n error app.log告诉你错误出现在第几行去编辑器里直接跳转不用眼瞎。4. 递归搜索整个目录bashgrep -r error /var/log/搜索 /var/log/ 下所有文件找出包含 error 的行。不用一个个文件打开。5. 只匹配完整单词bashgrep -w error app.log只匹配完整的 error 单词不会匹配 error123 或 error_log。 进阶技巧高手必看组合搜索或关系bashgrep -E error|fail|timeout app.log找包含 error、fail或timeout 的行。一条命令搞定三种关键词。组合搜索与关系bashgrep error app.log | grep database先找 error再从中找 database。相当于error AND database。排除某些行bashgrep -v debug app.log显示所有不包含debug 的行。看错误日志时排除干扰项。显示匹配结果的前后几行bashgrep -B 2 -A 3 error app.log显示 error 所在行的前2行和后3行。光看一行不够上下文才是真相。只统计匹配数量不显示内容bashgrep -c error app.log只告诉你有多少个 error不刷屏。适合快速了解错误数量。 真实场景场景1排查接口500报错bashgrep 500 /var/log/nginx/access.log找出所有返回500错误的请求看看是哪个接口在报错。场景2找某个IP的访问记录bashgrep 192.168.1.100 /var/log/nginx/access.log某个IP在搞事情一条命令查出来。场景3找今天凌晨3点的报错bashgrep 2026-04-15 03: app.log | grep -i error凌晨3点被报警吵醒先看看那时候发生了什么。场景4在100个配置文件里找某个配置项bashgrep -r max_connections /etc/不用一个个打开grep帮你搜完。⚠️ 小贴士参数含义使用场景-i忽略大小写不确定大小写时-n显示行号需要定位到具体位置-r递归搜索搜索整个目录-w匹配完整单词避免匹配到包含关系-v排除匹配过滤干扰信息-c只统计数量快速了解有多少条-E正则表达式复杂匹配条件 下期预告《每日一命令02awk——一个被低估的表格处理高手》评论区说说你最常用的grep参数是什么——阿垚一个踩过2万次坑的“老”IT