grep是Linux/Unix系统中一个非常强大的文本搜索工具,它的名字来源于"Global Regular Expression Print"(全局正则表达式打印)。grep命令用于在文件中搜索包含特定模式的行,并将匹配的行打印出来。

目录

一、基本语法

二、常用选项

三、基本用法示例

在文件中搜索字符串

忽略大小写搜索

显示匹配行的行号

统计匹配行数

递归搜索目录

反向匹配(显示不包含模式的行)

搜索多个文件

使用通配符搜索多个文件

四、高级用法

使用正则表达式

显示匹配行及其前后内容

搜索压缩文件

管道结合使用

使用扩展正则表达式

高亮显示匹配结果

五、实际应用场景

查找日志中的错误信息

统计代码中某个函数出现的次数

查找包含特定IP地址的日志行

查找空行

查找非空行

在多文件中查找并显示文件名


一、基本语法

grep [选项] 模式 [文件...]

二、常用选项

选项描述
-i忽略大小写
-v反向匹配,显示不包含模式的行
-n显示匹配行的行号
-c只显示匹配的行数
-l只显示包含匹配项的文件名
-L只显示不包含匹配项的文件名
-r 或 -R递归搜索子目录
-w匹配整个单词
-A n显示匹配行及其后n行
-B n显示匹配行及其前n行
-C n显示匹配行及其前后各n行
-E使用扩展正则表达式(等同于egrep)
-F将模式视为固定字符串而非正则表达式(等同于fgrep)
--color高亮显示匹配部分

三、基本用法示例

  1. 在文件中搜索字符串

    grep "search_pattern" file.txt

  2. 忽略大小写搜索

    grep -i "pattern" file.txt

  3. 显示匹配行的行号

    grep -n "pattern" file.txt

  4. 统计匹配行数

    grep -c "pattern" file.txt

  5. 递归搜索目录

    grep -r "pattern" /path/to/directory

  6. 反向匹配(显示不包含模式的行)

    grep -v "pattern" file.txt

  7. 搜索多个文件

    grep "pattern" file1.txt file2.txt

  8. 使用通配符搜索多个文件

    grep "pattern" *.log

四、高级用法

  1. 使用正则表达式

    grep "^start" file.txt      # 匹配以"start"开头的行
    grep "end$" file.txt        # 匹配以"end"结尾的行
    grep "[0-9]" file.txt       # 匹配包含数字的行
  2. 显示匹配行及其前后内容

    grep -A 2 "pattern" file2.txt  # 显示匹配行及后2行
    grep -B 2 "pattern" file2.txt  # 显示匹配行及前2行
    grep -C 2 "pattern" file2.txt  # 显示匹配行及前后各2行

  3. 搜索压缩文件

    zgrep "pattern" file.gz      # 搜索gzip压缩文件
    bzgrep "pattern" file.bz2    # 搜索bzip2压缩文件
  4. 管道结合使用

    cat file.txt | grep -v "exclude_"

  5. 使用扩展正则表达式

    grep -E "pattern1|pattern2" file.txt  # 匹配pattern1或pattern2

  6. 高亮显示匹配结果

    grep --color=auto "pattern" file.txt


五、实际应用场景

  1. 查找日志中的错误信息

    grep -i "error" /var/log/syslog
  2. 统计代码中某个函数出现的次数

    grep -c "function_name" *.c
  3. 查找包含特定IP地址的日志行

    grep "192\.168\.1\.100" /var/log/auth.log
  4. 查找空行

    grep "^$" file.txt
  5. 查找非空行

    grep -v "^$" file.txt
  6. 在多文件中查找并显示文件名

    grep -l "main" *.c

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

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

相关文章

苍穹外卖问题系列之 苍穹外卖订单详情前端界面和网课给的不一样

问题 如图,我的前端界面和网课里面给的不一样,没有“申请退款”和一些其他的该有的东西。 原因分析 “合计”这一栏显示undefined说明我们的总金额没有输入进去。可以看看订单提交那块的代码,是否可以正确输出。还有就是订单详细界面展示这…

CppCon 2018 学习:EMULATING THE NINTENDO 3DS

我们来逐个分析一下这个 组件交互模型 和 仿真 & 序列化 的关系,特别是主线程(Main Thread)与其他系统组件之间的交互。 1. Main Thread — simple (basically memcpy) --> GPU Main Thread(主线程)负责游戏的…

[Python 基础课程]数字

数字 数字数据类型用于存储数值,比如整数、小数等。数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间。 创建数字类型的变量: var1 1 var2 10创建完变量后,如果想废弃掉这个变量&a…

Linux CentOS环境下Java连接MySQL数据库指南

文章目录 前言一、环境准备1.1 系统更新1.2 Java环境安装1.3 MySQL数据库安装1.4 下载JDBC驱动 二、编写Java程序2.1 代码如下2.2 编译和运行2.3 验证创建结果 三、代码上传至Gitee3.1 安装配置Git3.2 克隆仓库到本地3.3 添加Java项目文件3.4 提交代码到本地仓库3.5 推送到Gite…

LLM面试12

讯飞算法工程师面试题 SVM核函数能否映射到无穷维 可以的,多项式核函数将低维数据映射到高维(维度是有限的),而高斯核函数可以映射到无穷维。由 描述下xgb原理,损失函数 首先需要说一说GBDT,它是一种基于boosting增强…

类加载生命周期与内存区域详解

类加载生命周期与内存区域详解 Java 类加载的生命周期包括加载、验证、准备、解析、初始化五个阶段,每个阶段在内存中的存储区域和赋值机制各有不同。以下是详细解析: 一、类加载生命周期阶段 1. 加载(Loading) 内存区域&…

正交视图三维重建2 笔记 2d线到3d线2 先生成3d线然后判断3d线在不在

应该先连线再判断线在不在 if(fx1tx1&&tx1tx2){ const A[fx1, fy1, ty1];const Ahat[fx1, fy1, ty2];drawlines(A[0], A[1], A[2], Ahat[0], Ahat[1], Ahat[2], lineId, type,2);}if(fx2tx1&&tx1tx2){ const B[fx2, fy2, ty1];const Bhat[fx2, fy2, ty2];drawl…

Hibernate对象生命周期全解析

Hibernate对象生命周期详解 Hibernate作为Java领域主流的ORM框架,其核心机制之一就是对持久化对象生命周期的管理。理解Hibernate对象生命周期对于正确使用Hibernate进行数据持久化操作至关重要。Hibernate将对象分为三种主要状态:瞬时态(Transient)、持久态(Persistent)和游…

MCP 协议使用核心讲解

📄 MCP 协议使用核心讲解 ✅ MCP 协议的核心在于以下几个方面 一、MCP 请求结构(MCPRequest) {"messages": [{"role": "user","content": "帮我查询一下上海的天气"}],"tools"…

云计算中的几何方法:曲面变形的可视化与动画-AI云计算数值分析和代码验证

着重强调微分方程底层的几何和代数结构,以进行更深入的分析和求解方法。开发结构保持的数值方法,以在计算中保持定性特征。统一符号和数值方法,实现有效的数学建模。利用几何解释(如双曲几何)求解经典微分方程。利用计…

OpenCV篇——项目(一)OCR识别读取银行卡号码

目录 信用卡数字识别系统:前言与代码解析 前言 项目代码 ​​​​​​结果演示 代码模块解析 1. 参数解析模块 2. 轮廓排序函数 3. 图像预处理模块 4. 输入图像处理流程 5. 卡号区域定位 6. 数字识别与输出 系统优势 信用卡数字识别系统:前言…

Adobe AI高效设计秘籍与创新思维进阶

开篇:十年设计征途,Adobe赋能创意飞翔 作为一名在设计领域耕耘十年的旅居职业设计师,我得益于英国帕维斯经济与音乐学院(Parvis School of Economics and Music)提供的Adobe正版教育订阅,得以持续探索技术…

vc formal实例

命令: module load gui 方式启动命令, 看一下cc_pinmux.tcl 里面有什么: 工具feature 的设置,不太懂 对特定模块做blackbox, library file, 一般是工具无法识别的模块,例如 IO lib,memory lib,analog lib, 内部有 …

JavaScript取值get的json/url/普通对象参考

dstore.on(datachanged,function(dstore){ for(i0;i<dstore.getCount();i){ var a dstore.getAt(i); var imp_infoa.get(imp_info); 上面这段JS代码&#xff0c;imp_info取到的是一长串KEY和VALUE组成的内容&#xff0c;我怎样可以准确获取其中一…

【C++】侦测按键事件

侦测按键事件可以用C的conio.h头文件&#xff0c;用到的函数&#xff1a; _CRTIMP int __cdecl _getch(void); 输入以下代码&#xff1a; #include <iostream> #include <conio.h> using namespace std;int main() {char key;while (true) {cout << "…

Coremail受邀亮相华为开发者大会

6月20-22日&#xff0c;为期三天的HDC.2025华为开发者大会在东莞举行&#xff0c;全球超过1.2万名开发者汇聚现场&#xff0c;聚焦鸿蒙生态、AI技术及产业合作。Coremail作为鸿蒙生态的核心伙伴和深度参与者受邀出席&#xff0c;并获得“智慧办公最佳产品合作伙伴”奖项。 HDC.…

视频断点续播全栈实现:基于HTML5前端与Spring Boot后端

文章目录 视频断点续播功能实现方案核心思路前端实现HTML结构JavaScript实现Spring Boot后端实现1.依赖配置(pom.xml)2.实体类3.存储库接口4.服务层5. 控制器实现要点视频断点续播功能构思图流程说明用户交互:前端核心功能:后端处理:数据存储:🌐 我的个人网站:乐乐主题创…

华为设备 QoS 流分类与流标记深度解析及实验脚本

一、引言 在复杂网络环境中&#xff0c;不同业务对网络质量需求各异。语音通话要求低时延、视频直播依赖高带宽、普通文件传输对丢包容忍度相对较高 。QoS&#xff08;Quality of Service&#xff0c;服务质量&#xff09;技术通过流分类、流标记等手段&#xff0c;为不同业务…

[论文阅读] 人工智能 + 软件工程 | 从软件工程视角看大语言模型:挑战与未来之路

从软件工程视角看大语言模型&#xff1a;挑战与未来之路 论文标题&#xff1a;Software Engineering for Large Language Models: Research Status, Challenges and the Road Ahead arXiv:2506.23762 Software Engineering for Large Language Models: Research Status, Chall…

【Docker基础】Docker容器管理:docker rm及其参数详解

目录 1 Docker容器生命周期概述 2 docker rm命令基础 2.1 命令基本语法 2.2 命令功能说明 2.3 基本使用示例 3 docker rm参数详解 3.1 -f, --force 3.2 -v, --volumes 3.3 -l, --link 3.4 --time 4 docker rm高级用法 4.1 批量删除容器 4.1.1 删除所有已停止的容器…