?? 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 用法。