当前位置: 首页 > news >正文

grep 命令详解(通俗版)

1. 基础概念

grep 是 Linux 下的文本搜索工具,核心功能是从文件或输入流中筛选出包含指定关键词的行
它像“文本界的搜索引擎”,能快速定位关键信息,特别适合日志分析、代码排查等场景。


2. 基础语法
grep [选项] "搜索词" 文件名

3. 常用选项与实例

① 简单搜索
# 在 catalina.out 中查找包含 "ERROR" 的行
grep "ERROR" catalina.out

# 示例输出:
# 2023-10-25 14:00:10 ERROR NullPointerException...
# 2023-10-25 14:05:20 ERROR Database connection failed...

② 忽略大小写(-i)
# 查找 "error"(不区分大小写,匹配 ERROR/error/Error)
grep -i "error" catalina.out

③ 显示行号(-n)
# 显示匹配行及其行号(方便定位到文件具体位置)
grep -n "NullPointer" catalina.out

# 示例输出:
# 105:2023-10-25 14:00:10 ERROR NullPointerException...

④ 反向匹配(-v)
# 排除包含 "INFO" 的行(只显示不匹配的行)
grep -v "INFO" catalina.out

⑤ 显示上下文(-A/-B/-C)
# 显示匹配行及其后5行(After)
grep -A 5 "OOM" catalina.out  # 适合查看堆栈信息

# 显示匹配行及其前3行(Before)
grep -B 3 "Timeout" catalina.out

# 显示匹配行前后各2行(Context)
grep -C 2 "WARN" catalina.out

⑥ 正则表达式(-E)
# 使用正则匹配(例如:以 "ERROR" 开头或包含 "404")
grep -E "^ERROR|404" catalina.out

# 等价于:
egrep "^ERROR|404" catalina.out

⑦ 统计匹配次数(-c)
# 统计 "ERROR" 出现的总次数
grep -c "ERROR" catalina.out

# 统计每个文件的匹配次数(多文件时)
grep -c "404" access.log error.log

⑧ 递归搜索目录(-r)
# 在 /var/log 目录下所有文件中搜索 "Timeout"
grep -r "Timeout" /var/log

# 同时显示文件名和行号
grep -rn "Timeout" /var/log

⑨ 匹配整词(-w)
# 只匹配完整单词 "Error"(避免匹配到 "Errors" 或 "ErrorCode")
grep -w "Error" catalina.out

4. 实战场景

场景1:快速定位 Tomcat 启动失败原因
# 查看启动日志中的错误
grep -A 20 "ERROR" catalina.out | less
场景2:统计接口 500 错误次数
# 在访问日志中统计 500 状态码
grep " 500 " access.log | wc -l
场景3:过滤无关日志
# 只看 ERROR 和 WARN,排除 INFO 和 DEBUG
grep -E "ERROR|WARN" catalina.out | grep -v "INFO\|DEBUG"
场景4:搜索指定时间段的日志
# 先按时间截取日志,再过滤关键词
sed -n '/2023-10-25 14:00:/,/2023-10-25 15:00:/p' catalina.out | grep "ERROR"

5. 性能技巧

  • 大文件搜索:先用 grep 过滤,再用其他命令处理,避免内存溢出。
    grep "ERROR" huge.log | awk '{print $1}'  # 先过滤再提取列
    
  • 压缩文件搜索:无需解压,直接使用 zgrep
    zgrep "404" access.log.gz
    

总结

grep 是 Linux 文本处理的瑞士军刀,核心能力 = 关键词搜索 + 正则匹配
掌握常用选项后,可以快速解决以下问题:

  1. 日志分析:定位错误、统计异常
  2. 代码调试:查找函数调用、追踪变量
  3. 数据清洗:过滤无效数据、提取关键字段

记住万能公式
grep [选项] "搜索词" 文件 | 其他命令
(如结合 awksortwc 等进一步处理结果)

相关文章:

  • 网站进入之前动态效果棋牌软件制作开发多少钱
  • 厦门英文网站建设seo全网优化推广
  • 有哪些做电子小报的网站富阳seo关键词优化
  • 保山网站制作东莞seo项目优化方法
  • 福田做网站公司怎么选十大免费cms建站系统介绍
  • 自行车网站模板成都seo排名
  • AQUA爱克泳池设备入驻济南校园,以品质筑牢游泳教育安全防线
  • C# System.Text.Json 中 JsonNamingPolicy 使用详解
  • ue5 仿鬼泣5魂类游戏角色和敌人没有碰撞
  • Opencv计算机视觉编程攻略-第八节 检测兴趣点
  • linux 安装 mysql记录
  • 【机器学习中的基本术语:特征、样本、训练集、测试集、监督/无监督学习】
  • SpringKafka错误处理:重试机制与死信队列
  • WPF设计学习记录滴滴滴4
  • 安装 Microsoft Visual C++ Build Tools
  • 测风塔选址和安装原则
  • Nginx的URL重写及访问控制
  • AI智能体驱动下的营销范式革命:解码“氛围营销“时代的战略重构
  • 《Linux内存管理:实验驱动的深度探索》【附录】【实验环境搭建 2】【vscode搭建调试内核环境】
  • Gemini 2.5 Pro与Claude 3.7 Sonnet编程性能对比
  • UE5学习笔记 FPS游戏制作38 继承标准UI
  • 如何本地部署DeepSeek:从零实现AI模型私有化部署
  • 【Java SE】Math类、System类
  • 【Ragflow】10. 助理配置参数详细解析/模型响应加速方法
  • 开源的 LLM 应用开发平台Dify的安装和使用
  • SQL 查询执行顺序