📝 grep 参数速查表
🎯 基础匹配
| 参数 |
含义 |
示例 |
PATTERN |
要匹配的模式(支持正则) |
grep "error" file.log |
-F |
关闭正则,按固定字符串匹配(更快) |
grep -F "a.b" file.txt |
-E |
使用扩展正则 (ERE),相当于 egrep |
`grep -E "error |
-P |
使用 Perl 正则 (PCRE) |
grep -P "\d{3}" file.txt |
🔎 匹配控制
| 参数 |
含义 |
示例 |
-i |
忽略大小写 |
grep -i "error" file.log |
-w |
匹配完整单词 |
grep -w "cat" pets.txt |
-x |
匹配整行 |
grep -x "hello" file.txt |
-v |
取反(匹配不包含的行) |
grep -v "DEBUG" file.log |
📂 文件搜索
| 参数 |
含义 |
示例 |
-r / -R |
递归目录搜索 |
grep -r "TODO" ./src |
-l |
只输出匹配的文件名 |
grep -l "main" *.c |
-L |
只输出不匹配的文件名 |
grep -L "main" *.c |
--exclude=PATTERN |
排除文件 |
grep -r "foo" . --exclude="*.log" |
--include=PATTERN |
只查指定文件 |
grep -r "foo" . --include="*.py" |
📊 输出控制
| 参数 |
含义 |
示例 |
-n |
显示行号 |
grep -n "error" file.log |
-H |
显示文件名(默认多个文件时) |
grep -H "foo" file1 file2 |
-h |
隐藏文件名 |
grep -h "foo" file1 file2 |
-c |
只显示匹配行数 |
grep -c "error" file.log |
-o |
只输出匹配内容(不显示整行) |
grep -o "foo[0-9]" file.txt |
-q |
静默模式(仅返回退出码) |
grep -q "error" file.log && echo "Found" |
📐 上下文控制
| 参数 |
含义 |
示例 |
-A NUM |
显示匹配行及后 NUM 行 |
grep -A2 "error" file.log |
-B NUM |
显示匹配行及前 NUM 行 |
grep -B2 "error" file.log |
-C NUM |
显示匹配行及前后 NUM 行 |
grep -C3 "error" file.log |
⚡ 性能 & 其他
| 参数 |
含义 |
示例 |
-m NUM |
匹配到 NUM 行后停止 |
grep -m1 "error" file.log |
--color=auto |
高亮匹配内容 |
grep --color=auto "foo" file.txt |
-Z |
输出以 NULL 结尾(配合 xargs -0 用) |
`grep -Z -l "main" *.c |
📌 常见组合示例
# 忽略大小写,显示匹配行号,并高亮
grep -in --color=auto "error" app.log# 递归查找 .py 文件里包含 "def " 的函数定义
grep -r --include="*.py" "def " .# 查看匹配 "ERROR" 的行,以及后面 3 行
grep -A3 "ERROR" app.log# 只统计包含 "fail" 的行数
grep -c "fail" result.txt
✅ 这样一张表几乎覆盖了日常 95% 的 grep 用法。