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

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.lryc.cn/news/2387059.html

相关文章:

  • Kotlin 极简小抄 P8(不可空类型、可空类型、注意事项、非空断言 !!)
  • 【Spring AI集成实战】基于NVIDIA LLM API构建智能聊天应用:从配置到函数调用全解析
  • git 删除某个远程库的分支
  • Redis实战-缓存篇(万字总结)
  • QT5.15 MacOS 打包指南
  • Nginx location匹配模式详解
  • Vue 3 路由传参使用指南
  • vscode使用ssh链接服务器
  • 企业批量处理刚需PrintPDF 网络财务办公打印 网页到 Office 一键转 PDF
  • Python学习笔记--Django 表单处理
  • Python - 文件部分
  • 【监控】Blackbox Exporter 黑盒监控
  • 历年福州大学保研上机真题
  • 【RAG】ragflow源码亮点:文档embedding向量化加权融合
  • 大模型学习笔记day2 LoRA微调
  • Maven-概述-介绍安装
  • GitHub Page填写域名显示被占用
  • js实现监听Ctrl/Cmd+C复制、Ctrl/Cmd+Z撤销 等快捷键
  • java高级 -动态代理
  • 机器学习算法:线性回归
  • NotePad++编辑Linux服务器文档
  • 常见小问题(Open Folder as PyCharm Project)
  • 第四十四节:目标检测与跟踪-模板匹配
  • Trae中使用mcp连接MariaDB
  • 第12次04 :首页展示用户名
  • MFC: 文件加解密(单元测试模块)
  • vue+ThreeJs 创建过渡圆圈效果
  • MySQL:12_视图
  • 2025 年开源 LLM 发展趋势细致解读
  • win11+vs2022 安装opencv 4.11.0图解教程