Linux grep 命令详解:常用选项、参数及实战场景

一、grep 命令简介
`grep`(Global Regular Expression Print)是 Linux 中用于文本搜索的核心工具,支持正则表达式,能快速定位文件中的目标内容。

 二、常用选项(Options)及英文对照
| 选项 | 英文全称 | 作用 |
|------|----------|------|
| `-i` | `--ignore-case` | 忽略大小写 |
| `-c` | `--count` | 统计匹配行数 |
| `-n` | `--line-number` | 显示行号 |
| `-o` | `--only-matching` | 仅输出匹配内容 |
| `-A` | `--after-context=N` | 显示匹配行后 N 行 |
| `-B` | `--before-context=N` | 显示匹配行前 N 行 |
| `-C` | `--context=N` | 显示匹配行前后各 N 行 |
| `-r` | `--recursive` | 递归搜索目录 |
| `-w` | `--word-regexp` | 匹配完整单词 |
| `-E` | `--extended-regexp` | 启用扩展正则表达式 |

三、实战场景与示例

1. 统计文件中 `error` 出现的次数(忽略大小写)

说明:统计 `app.log` 中所有包含 `error` 的行数(不区分大小写)。

命令:

grep -i -c 'error' app.log

2. 搜索压缩文件中的特定 JSON 字符串
说明:
在 `logs.zip` 压缩包中搜索包含 `系统忙,请稍后再试' 的文件,并统计匹配次数。
命令:


zgrep -o -c '系统忙,请稍后再试' *.zip
# 注意:`zgrep` 是专门用于搜索压缩文件的工具
 

3. 显示关键词前后两行的上下文
 说明:
在 `debug.log` 中搜索 `ConnectionTimeout` 并显示匹配行及其前后各 2 行的内容。
 命令:


grep -C 2 'ConnectionTimeout' debug.log
#注意:C是大写的,如果想要看前两行用-B  2,后3行 -A 3

4. 统计时间段内字符串的出现次数
 说明:
在 `access.log` 中统计 `2023-10-01 14:00` 至 `2023-10-01 15:00` 内 `GET /api/user` 的请求次数。
命令:


awk '/2023-10-01 14:[0-5][0-9]/ && /2023-10-01 15:00/ && /GET \ /api\ /user/ {count++} END {print count}' access.log
说明:结合 `awk` 处理时间范围
 

4.1 查询日志按时间排序,可以先用 sed 提取时间段内的行,再通过 grep 统计字符串:
sed -n '/00:00:00/,/01:55:00/p' info.log | grep -c 'GET\  \/api\/user' 

 四、更多高频用法

 1. 递归搜索目录并显示行号
 说明:
在 `/var/log` 目录及其子目录中递归搜索 `Permission denied`,并显示文件名和行号。
命令:

grep -r -n "Permission denied" /var/log

 2. 精确匹配单词(避免部分匹配)
说明:
在 `config.txt` 中匹配完整的单词 `port`(避免匹配 `export` 或 `portal`)。
命令:

grep -w 'port' config.txt

五、注意事项
1. **正则表达式转义**:若搜索内容包含特殊字符(如 `.`、`*`),需用 `\` 转义。  
  

grep "192\.168\.1\.1" access.log



2. 性能优化:大文件搜索时,可结合 `-m NUM` 限制匹配次数。

 六、总结
掌握 `grep` 的常用选项和组合技巧,能大幅提升日志分析、故障排查的效率。灵活运用正则表达式和上下文控制选项,可覆盖绝大多数文本搜索场景!

推荐工具:  
- 复杂正则表达式测试:[RegExr](https://regexr.com/)  
- 日志分析进阶:`awk`、`sed`

希望这篇博客能帮助您快速掌握 `grep` 的核心用法!如果有其他问题,欢迎评论区交流! 🚀

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

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

相关文章

【Java-EE进阶】SpringBoot针对某个IP限流问题

目录 简介 1. 使用Guava的RateLimiter实现限流 添加Guava依赖 实现RateLimiter限流逻辑 限流管理类 控制器中应用限流逻辑 2. 使用计数器实现限流 限流管理类 控制器中应用限流逻辑 简介 针对某个IP进行限流以防止恶意点击是一种常见的反爬虫和防止DoS的措施。限流策…

Linux问题排查-找到偷偷写文件的进程

在 Linux 系统中,若要通过已修改的文件找到修改该文件的进程 PID,可以结合以下方法分析,具体取决于文件是否仍被进程打开或已被删除但句柄仍存在: 一、文件仍被进程打开(未删除) 如果文件当前正在被某个进…

More Effective C++:改善编程与设计(下)

目录 条款19:了解临时对象的来源 条款20:协助完成“返回值优化” 条款21:利用重载技术避免隐式类型转换 条款22:考虑以操作符复合形式(op)取代其独身形式(op) 条款23:考虑使用其他程序库 条款24:了解virtual functions、mul…

VTK|类似CloudCompare的比例尺实现2-vtk实现

文章目录 实现类头文件实现类源文件调用逻辑关键问题缩放限制问题投影模式项目git链接实现类头文件 以下是对你提供的 ScaleBarController.h 头文件添加详细注释后的版本,帮助你更清晰地理解每个成员和方法的用途,尤其是在 VTK 中的作用: #ifndef SCALEBARCONTROLLER_H #de…

PostgreSQL 联合索引生效条件

最近面试的时候,总会遇到一个问题 在 PostgreSQL 中,联合索引在什么条件下会生效? 特此记录~ 前置信息 数据库版本 PostgreSQL 14.13, compiled by Visual C build 1941, 64-bit 建表语句 CREATE TABLE people (id SERIAL PRIMARY KEY,c…

SpringBoot项目里面发起http请求的几种方法

在Spring Boot项目中发起HTTP请求的方法 在Spring Boot项目中,有几种常用的方式可以发起HTTP请求,以下是主要的几种方法: 1. 使用RestTemplate (Spring 5之前的主流方式) // 需要先注入RestTemplate Autowired private RestTemplate restT…

《Python星球日记》 第90天:微调的概念以及如何微调大模型?

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、微调原理1. 什么是大模型微调?2. 为什么需要微调?3. 微调的基本流程4. 微调策略分类二、LoRA(Low-Rank Adaptation)技术详解1. LoRA的核…

机器学习-人与机器生数据的区分模型测试 - 模型融合与检验

模型融合 # 先用普通Pipeline训练 from sklearn.pipeline import Pipeline#from sklearn2pmml.pipeline import PMMLPipeline train_pipe Pipeline([(scaler, StandardScaler()),(ensemble, VotingClassifier(estimators[(rf, RandomForestClassifier(n_estimators200, max_de…

怎样免费开发部署自己的网站?

要免费开发自己的网站,您可以根据自己的技术水平和需求选择以下两种主要方式: 零基础用户:建议使用如WordPress.com、Weebly、Strikingly等平台,快速搭建网站。 有一定技术基础的用户:可选择自行开发网站,…

调用百度云API机器翻译

新建Python文件,叫 text_translator.py 输入 import requests import jsonAPI_KEY "glYiYVF2dSc7EQ8n78VDRCpa" # 替换为自己的API Key SECRET_KEY "kUlhze8OQZ7xbVRp" # 替换为自己的Secret Keydef main():# 选择翻译方向while True:di…

OpenAI与微软洽谈新融资及IPO,Instagram因TikTok流失四成用户

OpenAI与微软洽谈新融资及IPO 据悉,OpenAI 正与微软洽谈新融资及筹备 IPO,关键问题是微软在 OpenAI 重组后的股权比例。微软已投资超 130 亿美元,双方修订 2019 年合同,微软拟弃部分股权换新技术访问权。OpenAI 上周放弃了有争议转…

git工具使用详细教程-------命令行和TortoiseGit图形化

下载 git下载地址:https://git-scm.com/downloads TortoiseGit(图形化工具)下载地址:https://tortoisegit.org/download/ 认识git结构 工作区:存放代码的地方 暂存区:临时存储,将工作区的代码…

构建RAG混合开发---PythonAI+JavaEE+Vue.js前端的实践

7GB显存如何部署bf16精度的DeepSeek-R1 70B大模型?-CSDN博客 服务容错治理框架resilience4j&sentinel基础应用---微服务的限流/熔断/降级解决方案-CSDN博客 conda管理python环境-CSDN博客 快速搭建对象存储服务 - Minio,并解决临时地址暴露ip、短…

【Java ee初阶】jvm(3)

一、双亲委派机制(类加载机制中,最经常考到的问题) 类加载的第一个环节中,根据类的全限定类名(包名类名)找到对应的.class文件的过程。 JVM中进行类加载的操作,需要以来内部的模块“类加载器”…

wps excel将表格输出pdf时所有列在一张纸上

记录:wps excel将表格输出pdf时所有列在一张纸上 1,调整缩放比例,或选择将所有列打印在一页 2,将表格的所有铺满到这套虚线

分布式微服务系统架构第134集:笔记1运维服务器经验,高并发,大数据量系统

加群联系作者vx:xiaoda0423 仓库地址:https://webvueblog.github.io/JavaPlusDoc/ https://1024bat.cn/ https://github.com/webVueBlog/fastapi_plus https://webvueblog.github.io/JavaPlusDoc/ ✅ 一、查看端口是否被占用的常用命令 1️⃣ lsof 命令&…

IS-IS 中间系统到中间系统

前言: 中间系统到中间系统IS-IS(Intermediate System to Intermediate System)属于内部网关协议IGP(Interior Gateway Protocol),用于自治系统内部 IS-IS也是一种链路状态协议,使用最短路径优先…

前端安全:XSS、CSRF 防御与最佳实践

引言 随着互联网应用的普及,前端安全问题日益凸显。作为开发者,了解并防范常见的安全威胁至关重要。本文将深入探讨两种最常见的前端安全威胁:跨站脚本攻击(XSS)和跨站请求伪造(CSRF)&#xff…

uniapp 弹窗封装(上、下、左、右、中五个方位)

无脑复制即可&#xff01;&#xff01;&#xff01; <template><view><viewv-if"mask"class"tui-drawer-mask":class"{ tui-drawer-mask_show: visible }":style"{ zIndex: maskZIndex }"tap"handleMaskClick&qu…

Axure制作可视化大屏动态滚动列表教程

在可视化大屏设计中&#xff0c;动态滚动列表是一种常见且实用的展示方式&#xff0c;能够有效地展示大量信息。本文将详细介绍如何使用Axure制作一个动态滚动的列表展示模块。 一、准备工作 打开Axure软件&#xff1a;确保你已经安装并打开了Axure RP软件。创建新项目&#x…