每天深入一个学习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 grep
➜grep + awk
数据管道