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 等进一步处理结果)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/74371.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSVMP逆向实战:原理分析与破解思路详解

引言 在当今Web安全领域,JavaScript虚拟机保护(JSVMP)技术被广泛应用于前端代码的保护和反爬机制中。作为前端逆向工程师,掌握JSVMP逆向技术已成为必备技能。本文将深入剖析JSVMP的工作原理,并分享实用的逆向破解思路…

【youcans论文精读】弱监督深度检测网络(Weakly Supervised Deep Detection Networks)

欢迎关注『youcans论文精读』系列 本专栏内容和资源同步到 GitHub/youcans 【youcans论文精读】弱监督深度检测网络 WSDDN 0. 弱监督检测的开山之作0.1 论文简介0.2 WSDNN 的步骤0.3 摘要 1. 引言2. 相关工作3. 方法3.1 预训练网络3.2 弱监督深度检测网络3.3 WSDDN训练3.4 空间…

基于Contiue来阅读open-r1中的GRPO训练代码

原创 快乐王子HP 快乐王子AI说 2025年04月03日 23:54 广东 前面安装了vscode[1]同时也安装了Coninue的相关插件[2],现在想用它们来阅读一下open-r1项目的代码[3]。 首先,从启动训练开始(以GRPO为例子) 第一步,使用TRL的vLLM后端…

JVM深入原理(六)(二):双亲委派机制

目录 6.5. 类加载器-双亲委派机制 6.5.1. 双亲委派机制-作用 6.5.2. 双亲委派机制-工作流程 6.5.3. 双亲委派机制-父加载器 6.5.4. 双亲委派机制-面试题 6.5.5. 双亲委派机制-代码主动加载一个类 6.6. 类加载器-打破双亲委派机制 6.6.1. 打破委派-ClassLoader原理 6.6.…

Linux 文件系统超详解

一.磁盘 磁盘是计算机的主要存储介质,它可以存储大量二进制数据,即使断电后也可以保证数据不会丢失。下面我们将了解磁盘的物理结构、存储结构以及逻辑结构。 磁盘的存储结构 1. 磁盘寻址的时候,基本单位既不是bit也不是byte,而…

2025年大模型与Transformer架构:重塑AI未来的科技革命

引言:一场关于智能的革命 想象一下,当你向一个虚拟助手提问时,它不仅能够准确理解你的需求,还能生成一段流畅且富有逻辑的回答;或者当你上传一张模糊的照片时,系统可以快速修复并生成高清版本——这一切的…

GO语言学习(16)Gin后端框架

目录 ☀️前言 1.什么是前端?什么是后端?🌀 2.Gin框架介绍 🌷 3.Gin框架的基本使用 -Hello,World例子🌷 🌿入门示例 - Hello,World 💻补充(一些常用的网…

深入解析 Git Submodule:从基础到高级操作指南

深入解析 Git Submodule:从基础到高级操作指南 一、Git Submodule 是什么? git submodule 是 Git 提供的一个强大功能,允许在一个 Git 仓库(主仓库)中嵌入另一个独立的 Git 仓库(子模块)。主仓…

电子电气架构 --- EEA演进与芯片架构转移

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 周末洗了一个澡,换了一身衣服,出了门却不知道去哪儿,不知道去找谁,漫无目的走着,大概这就是成年人最深的孤独吧! 旧人不知我近况,新人不知我过…

如何用deepseek生成流程图

软件准备: 在线流程图【Flowchart Maker & Online Diagram Software】或【process on】 步骤: 1、用 【DeepSeek】生成 结构化内容(Mermaid文件) 1.1、向deepseek输入指令:【帮我用mermaind写出“某某”的具体…

【华为OD技术面试真题 - 技术面】- Java面试题(17)

华为OD面试真题精选 专栏:华为OD面试真题精选 目录: 2024华为OD面试手撕代码真题目录以及八股文真题目录 文章目录 华为OD面试真题精选虚拟机分区1. **虚拟磁盘分区**2. **虚拟机的内存分区**3. **CPU分配**4. **虚拟网络分区**5. **存储虚拟化和分区**6. **虚拟机分区管理**…

Linux | I.MX6ULL内核及文件系统源码结构(7)

01 类型 描述 备注 ARM 交叉编译器 版本:4.9.4 提供软件工具 Uboot 版本:2016.03 提供源码 支持LCD显示;支持网口; 支持 EMMC,NAND FLASH; 支持环境变量修改保存 Linux 内核 版本:4.1.15 提供…

0基础入门scrapy 框架,获取豆瓣top250存入mysql

一、基础教程 创建项目命令 scrapy startproject mySpider --项目名称 创建爬虫文件 scrapy genspider itcast "itcast.cn" --自动生成 itcast.py 文件 爬虫名称 爬虫网址 运行爬虫 scrapy crawl baidu(爬虫名) 使用终端运行太麻烦了,而且…

鸿蒙NEXT小游戏开发:猜小球

1. 引言 “猜小球”是一个经典的益智游戏,通常由一名表演者和多名参与者共同完成。表演者会将一个小球放在一个杯子下面,然后将三个杯子快速地交换位置,参与者则需要猜出最终哪个杯子下面有小球。本文将介绍如何使用HarmonyOS NEXT技术&…

网络购物谨慎使用手机免密支付功能

在数字经济蓬勃发展的当下,“免密支付”成为许多人消费时的首选支付方式。 “免密支付”的存在有其合理性。在快节奏的现代生活中,时间愈发珍贵,每节省一秒都可能带来更高的效率。以日常通勤为例,上班族乘坐交通工具时&#xff0c…

记录 | Android getWindow().getDecorView().setSystemUiVisibility(...)设置状态栏属性

纯纯的一边开发一边学习,是小白是菜鸟,单纯的记录和学习,大神勿喷,理解有错望指正~ getWindow().getDecorView().setSystemUiVisibility(…) 该方法用于控制系统 UI(如状态栏、导航栏)的可见性…

java虚拟机---JVM

JVM JVM,也就是 Java 虚拟机,它最主要的作用就是对编译后的 Java 字节码文件逐行解释,翻译成机器码指令,并交给对应的操作系统去执行。 JVM 的其他特性有: JVM 可以自动管理内存,通过垃圾回收器回收不再…

VectorBT:使用PyTorch+LSTM训练和回测股票模型 进阶四

VectorBT:使用PyTorchLSTM训练和回测股票模型 进阶四 本方案融合 LSTM 时序预测与动态风险控制。系统采用混合架构,离线训练构建多尺度特征工程和双均线策略,结合在线增量更新持续优化模型。技术要点包括三层特征筛选、波动率动态仓位管理、混…

前端中rem,vh,vw

1. rem&#xff08;Root EM&#xff09; 参照对象 基准&#xff1a;相对于 根元素&#xff08;<html>&#xff09;的 font-size 计算。 默认情况下&#xff0c;浏览器的根 font-size 为 16px&#xff08;即 1rem 16px&#xff09;&#xff0c;但可通过 CSS 修改&#…

详解 MySQL 常见的存储引擎及它们之间的区别

MySQL 支持多种存储引擎&#xff0c;每种引擎针对不同的应用场景提供了特定的特性和优化。下面是几种常见的存储引擎以及它们之间的主要区别&#xff1a; 常见存储引擎 1. InnoDB&#xff08;重点&#xff09; 事务支持&#xff1a; 完全支持 ACID 事务&#xff0c;确保数据一…