ltts blog

每天深入一个学习linux命令系列 - gret命令深度解析

功能分类

文本模式匹配与过滤的核心工具命令定位:用于在文件/输入流中精准定位内容,是日志分析、配置调试的利器。

核心语法

grep [选项] '搜索模式' [文件...]

常用选项详解

选项功能描述场景示例
-i忽略大小写grep -i 'error' file.log
-v反选(不匹配的行)grep -v 'debug' file.log
-r递归目录搜索grep -r 'timeout' /etc/
-n显示行号grep -n 'warning' app.log
-c统计匹配行数grep -c 'POST' access.log
-A NUM显示匹配行后NUM行grep -A 3 'panic' system.log
-B NUM显示匹配行前NUM行grep -B 2 'disconnect' network.log
-E启用扩展正则表达式grep -E '[0-9]3-[0-9]4' data.txt

经典用例

精确锚点匹配

# 匹配行首为"ERROR:"的内容
grep '^ERROR:' server.log

多文件并行搜索

# 跨文件搜索状态码
grep '404' access.log error.log

管道组合过滤

 # 精准过滤进程
ps aux | grep 'nginx' | grep -v 'grep' 

正则表达式

# 提取带时间戳的错误行 (示例格式:2023-09-01 12:30 ERROR)
grep -E '^[0-9]{4}-[0-9]{2}-[0-9]{2}.*ERROR' app.log

高级技巧

1. 快速定位配置项

 # 仅搜索.conf文件中的Listen指令
grep -r --include='*.conf' 'Listen' /etc/ 

正则分组回溯引用

# 寻找重复单词(需启用-P选项,仅限支持PCRE的grep版本)
grep -P '\b(\w+)\s+\1\b' document.txt

性能优化技巧

# 仅显示前100个匹配结果
grep -m 100 'error' large.log

注意事项

特殊字符转义

# 搜索包含$符号的行(需转义)
grep '\$PATH' script.sh

多模式匹配

 # 匹配多个关键词
grep -e 'error' -e 'critical' logfile 

二进制文件风险

 # 强制将二进制视为文本处理
grep -a 'text' binary.data 

知识沉淀模板

grep | 模式过滤器

定位优先级: 日常高频 (数据清洗➜日志分析➜配置审计)
速记口诀:
"-i无视大小,-v反向开挂,-E正则王炸,管道组合杀全场"

脑图要点

  • 核心功能轴: 文本匹配 → 行过滤 → 结果聚合
  • 高阶链路: find ... -exec grepgrep + awk数据管道

目录