grep 是 Linux 最強大的文字搜尋工具,結合正則表達式可精準過濾日誌、程式碼、設定檔。本文整理 grep 專用元字符表、常用選項旗標,並提供實戰範例供快速查閱。

| 元字符 | 說明 | 範例 |
|---|---|---|
^ | 行首錨定 | ^grep 匹配以 grep 開頭的行 |
$ | 行尾錨定 | grep$ 匹配以 grep 結尾的行 |
. | 任意單一字元 (除換行) | gr.p 匹配 gr + 任一字 + p |
* | 前一字元 0 次或多次 | *grep 匹配空格後接 grep |
[...] | 字元集合 | [Gg]rep 匹配 Grep 或 grep |
[^...] | 排除字元集合 | [^A-Z]rep 非大寫字母開頭 |
\(...\) | 捕獲群組 (基本正則需轉義) | \(love\) 標記 love 為 \1 |
\< | 單字開頭 | \<grep 匹配以 grep 開頭的單字 |
\> | 單字結尾 | grep\> 匹配以 grep 結尾的單字 |
x\{m\} | x 重複 m 次 | 0\{5\} 5 個 0 |
x\{m,\} | x 至少 m 次 | o\{5,\} 至少 5 個 o |
x\{m,n\} | x 重複 m~n 次 | o\{5,10\} 5~10 個 o |
\w | 單字字元 [A-Za-z0-9_] | G\w*p G 後接單字字元再 p |
\b | 單字邊界 | \bgrep\b 僅匹配完整單字 grep |
-c 僅輸出匹配行數
-i 忽略大小寫
-h 多檔搜尋不顯示檔名
-l 僅列出含匹配行的檔名
-n 顯示行號
-s 隱藏不存在/無匹配錯誤
-v 反向匹配 (顯示不含模式的行)
-V 顯示版本
-E 擴展正則 (等同 egrep)
-F 固定字串 (等同 fgrep)
# 搜尋錯誤日誌 (忽略大小寫、顯示行號)
grep -in "error" /var/log/syslog
# 遞迴搜尋專案中所有 TODO 註解
grep -rn "TODO" src/
# 反向匹配:排除註解行
grep -v "^#" config.conf
# 多模式 OR 搜尋 (擴展正則)
grep -E "error|fail|critical" app.log
# 固定字串搜尋 (速度最快)
grep -F "192.168.1.100" access.log
最佳實務:模式字串建議用雙引號包裹,避免 Shell 先行展開特殊字元。
SVN 中文文件名報錯「Can't convert string from UTF-8」:Locale 配置修復指南
Linux OpenVPN 服務異常退出排查實戰:Too many open files 與 CRL 驗證 Bug 解決紀錄
Linux 正則表達式完整參考:基本/擴展語法元字符對照表、grep/egrep/fgrep 三劍客用法詳解
Linux 命令列配置 IPMI 完整指南:ipmitool 設定 IP、網閘、查看狀態
Linux 檔案權限備份與還原實戰:使用 ACL 工具完整保護權限設定