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

Linux三剑客之grep命令使用教程

grep命令选项详解:从基础到进阶的实用指南

一、基本选项

1. -i:忽略大小写(Case Insensitive)

  • 含义:搜索时不区分字母大小写。
  • 用法示例
    搜索包含"hello"的行,无论大小写:
    grep -i "hello" file.txt
    
  • 示例数据(file.txt)
    Hello World
    hello there
    Hi, HELLO!
    Goodbye
    
  • 执行结果
    Hello World
    hello there
    Hi, HELLO!
    
  • 应用场景:日志分析(如ERROR/error混用)、多语言文本处理。

2. -v:反向匹配(Invert Match)

  • 含义:显示不匹配指定模式的行。
  • 用法示例
    排除包含"error"的日志行:
    grep -v "error" log.txt
    
  • 示例数据(log.txt)
    INFO: System started
    WARNING: Disk space low
    ERROR: Connection failed
    INFO: User logged in
    
  • 执行结果
    INFO: System started
    WARNING: Disk space low
    INFO: User logged in
    
  • 应用场景:过滤干扰信息(如系统日志中的非错误信息)。

3. -n:显示行号(Line Number)

  • 含义:在匹配的行前添加行号。
  • 用法示例
    查找配置文件中包含"timeout"的行及其位置:
    grep -n "timeout" config.ini
    
  • 示例数据(config.ini)
    [database]
    host=localhost
    port=5432
    timeout=300[server]
    max_connections=100
    # default timeout value
    request_timeout=60
    
  • 执行结果
    4:timeout=300
    8:# default timeout value
    9:request_timeout=60
    
  • 应用场景:快速定位代码或配置文件中的问题行。

4. -c:统计匹配行数(Count)

  • 含义:仅返回匹配的行数,不显示具体内容。
  • 用法示例
    统计日志中ERROR的出现次数:
    grep -c "ERROR" app.log
    
  • 示例数据(app.log)
    INFO: Starting application
    WARNING: Deprecated API call
    ERROR: Database connection failed
    ERROR: Invalid user input
    INFO: Process completed
    
  • 执行结果
    2
    
  • 应用场景:监控日志异常频率、统计特定关键词出现次数。

5. -w:匹配完整单词(Word Regexp)

  • 含义:仅匹配独立的单词,避免匹配子串。
  • 用法示例
    查找包含"root"但不匹配"rooted"的行:
    grep -w "root" system.log
    
  • 示例数据(system.log)
    root logged in at 09:00
    user data rooted successfully
    root permissions granted
    system rooted for testing
    
  • 执行结果
    root logged in at 09:00
    root permissions granted
    
  • 应用场景:数据库字段名搜索、代码中变量名匹配。

6. -A/B/C:上下文显示(Context Lines)

  • 含义
    • -A n:显示匹配行及其后n行。
    • -B n:显示匹配行及其前n行。
    • -C n:显示匹配行及其前后各n行。
  • 用法示例
    查看配置文件中"[database]"部分的完整内容:
    grep -A 3 "\[database\]" config.ini
    
  • 示例数据(config.ini)
    [server]
    host=localhost
    port=8080[database]
    db_host=db.example.com
    db_port=5432
    username=admin
    password=secret[logging]
    level=INFO
    file=app.log
    
  • 执行结果
    [database]
    db_host=db.example.com
    db_port=5432
    username=admin
    
  • 应用场景:查看函数上下文、配置文件段落分析。

二、正则表达式选项

1. -E:扩展正则表达式(Extended Regexp&#

http://www.xdnf.cn/news/664723.html

相关文章:

  • 在Java集合中存储对象时,修改已添加到集合中的可变对象会影响集合中已存储的内容
  • AI系统的冲锋队:在线系统构建与应用
  • OpenFOAM中实现UDF(User Defined Function)的方法
  • 品融电商:品牌全域运营的领航者,赋能中国质造新时代
  • MySQL各种日志类型介绍
  • python每日剂量(2)探讨Python中不同解析库的提取速度对比
  • C++笔记-哈希表
  • 嵌入式学习之系统编程(五)进程(2)
  • Spring MVC、Spring 与 MyBatis 整合详解
  • 欧拉操作系统下安装hadoop集群
  • 【前端基础】Promise 详解
  • FacePoke创意交互实战:Cpolar技术赋能远程人像编辑的趣味实现
  • 国内短剧 vs. 海外短剧系统开发:2025年SEO优化与市场策略全解析
  • 机械设计插件
  • MS1824+MS7210+MS2130 1080P@60Hz USB3.0采集
  • 【文献阅读】Mixture of Lookup Experts
  • 语音识别技术在人工智能中的应用
  • 03 环境变量和标签
  • 电子元器件散热方式
  • 医院门户网站群改版技术白皮书
  • 如何调试CATIA CAA程序导致的CATIA异常崩溃问题
  • Vue 3 核心知识点全览
  • 电子电气架构 -- 第五代汽车电子电气(E/E)架构的两种主导实施方式
  • c++ 二叉搜索树(BinarySearchTree)
  • 晚期NSCLC临床试验终点与分析策略
  • 【力扣】关于链表索引
  • 初识LangChain
  • Visual Studio 调试中 PDB 与图像不匹配
  • STM32F103_Bootloader程序开发03 - 启动入口与升级模式判断(boot_entry.c与boot_entry.h)
  • JetsonHacksNano RealSense自动安装脚本文件解析