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

linux命令grep的实际应用

grep 是 Linux/Unix 系统中用于文本搜索的超级工具,其核心功能是使用正则表达式匹配文本行并输出结果。下面结合具体场景,展示其强大而实用的应用技巧:


一、基础搜索与过滤

  1. 快速定位文件内容:​

    grep "error" /var/log/syslog        # 查找 syslog 中所有含 "error" 的行
    grep -i "timeout" application.log   # -i 忽略大小写,查找 "timeout"
  2. 统计匹配行数:​

    grep -c "404" access.log            # 统计 access.log 中 404 错误出现的次数

二、高级搜索技巧

  1. 正则表达式匹配:​

    grep -E "[0-9]{3}-[0-9]{4}" data.txt  # 查找形如 "123-4567" 的电话号码
    grep -P "\d{2}:\d{2}:\d{2}" log.txt   # -P 启用 PCRE 匹配时间格式 "HH:MM:SS"
  2. 递归搜索目录:​

    grep -r "functionName" /src         # 递归搜索目录中所有文件
    grep -r --include="*.py" "import" . # 仅搜索 .py 文件中的 "import"
  3. 反向搜索(排除匹配项):​

    grep -v "DEBUG" app.log             # 排除所有含 "DEBUG" 的行(只显示非调试信息)

三、上下文查看(故障排查神器)​

grep -C 3 "crash" system.log        # 显示匹配行及其前后各3行
grep -A 2 "Starting service" log    # 显示匹配行及之后2行
grep -B 1 "Connection closed" log   # 显示匹配行及之前1行

场景示例:​​ 快速查看服务启动失败时的上下文错误信息。


四、进程与命令结合

  1. 过滤命令输出:​

    ps aux | grep "[n]ginx"          # 查找 Nginx 进程([n] 避免匹配自身)
    ifconfig | grep -E "inet [0-9.]+" # 提取所有 IP 地址
  2. 多条件组合搜索:​

    grep "error" log.txt | grep -v "warning"  # 只含 error 不含 warning

五、文件批量处理

  1. 列出匹配文件:​

    grep -rl "deprecated" .          # 搜索当前目录下包含 deprecated 的文件列表
  2. 代码重构辅助:​

    grep -rn "old_function(" .       # 显示旧函数被调用的位置(文件名 + 行号)

六、进阶玩法

  1. 颜色标注匹配项:​

    grep --color=auto "TODO" code.py # 高亮显示 "TODO",便于视觉定位
  2. 只输出匹配部分:​

    echo "Date: 2023-08-01" | grep -o "[0-9-]\+"  # 仅输出 "2023-08-01"
  3. 静默模式(用于脚本判断):​

    if grep -q "success" output.txt; thenecho "✅ Operation succeeded!"
    fi

经典排查场景实战

# 分析 Nginx 日志:筛选某 IP 的 POST 404 请求,显示前3后2行
grep -C '1.2.3.4.*POST.*404' /var/log/nginx/access.log | grep --color -E '404|$'

小贴士:​

  • 善用 | less -R 查看彩色输出(如 grep --color | less -R
  • 复杂正则用 -P (PCRE) 支持更丰富的语法(如 \d, \s
  • 大文件搜索时,可先用 head/grep 组合缩小范围(如 grep -m 1000 ...

掌握这些技巧后,grep 会成为你在日志分析、代码审查、数据清洗等任务中的首选利器!

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

相关文章:

  • MySQL 与 PostgreSQL 对比
  • Redis四种GetShell方式完整教程
  • 【WRF-Chem第二期】WRF-Chem有关 namelist 详解
  • 1.DRF 环境安装与配置
  • 零基础学习性能测试第九章:全链路追踪-系统中间件节点监控
  • LeetCode 刷题【18. 四数之和】
  • 计算机网络编程-Socket通信以及实战
  • 企业级JWT验证最佳方案:StringUtils.hasText()
  • 使用Ettus USRP X440对雷达和EW系统进行原型验证
  • 分布式IO选型指南:2025年分布式无线远程IO品牌及采集控制方案详解
  • Python动态规划:从基础到高阶优化的全面指南(2)
  • socketpair函数详解
  • Qt小组件 - 8 图片浏览器
  • go‑cdc‑chunkers:用 CDC 实现智能分块 强力去重
  • SpringBoot轻松集成豆包AI
  • 精简 RT-Thread 工程并查找占用空间大的模块
  • 中国汽车能源消耗量(2010-2024年)
  • java里List链式编程
  • 【智慧物联网平台】安装部署教程——仙盟创梦IDE
  • Jenkins流水线部署+webhook2.0
  • 四、计算机组成原理——第7章:输入/输出系统
  • 命令执行漏洞
  • EAP(基于事件的异步编程模式)
  • 思途SQL学习 0728
  • SIM2REAL记录
  • 初识 docker [下] 项目部署
  • 亚马逊地址关联暴雷:新算法下的账号安全保卫战
  • 通过具有一致性嵌入的大语言模型(LMMs)实现端到端乳腺癌放射治疗计划制定|文献速递-医学影像算法文献分享
  • 反欺诈系统:Oracle 到 ES 迁移实战
  • 形参表不匹配(BUG)