Linux grep 指令教學:實務案例與進階應用技巧

Linux grep 指令教學:20 個實務案例與新手完整解析

Linux grep 指令是日常系統管理與 DevOps 的核心工具之一,主要用於搜尋檔案內容、過濾日誌訊息與分析文字資料。本文整理 grep 常用參數與 20 個實務案例,從基礎到進階,包含日誌搜尋、多條件篩選與正則表達式應用,讓 Linux 新手快速上手並提升日常維護效率。掌握 grep 搜尋檔案、配合管道使用、以及正則匹配技巧,是系統管理的重要技能。

grep 常用參數與說明

以下列出 grep 常用參數,附上簡單白話說明,方便新手理解:

參數說明
-i忽略大小寫搜尋,例如搜尋 “Error” 或 “error” 都會找到
-v反向搜尋,不包含匹配的行
-r / -R遞迴搜尋資料夾下所有檔案
-n顯示匹配行的行號
-l只列出含匹配字串的檔案名稱
-c只計算匹配行數
-w整字匹配,例如搜尋 “cat” 不會抓到 “catalog”
-A N顯示匹配行及其後 N 行
-B N顯示匹配行及其前 N 行
-C N顯示匹配行及其前後 N 行
-E使用擴展正則表達式
-P使用 Perl 正則表達式,進階匹配功能

grep 20 個實務案例


# 案例一:搜尋日誌中含 "error" 的行
grep "error" /var/log/syslog

# 案例二:忽略大小寫搜尋 "warning"
grep -i "warning" /var/log/syslog

# 案例三:反向搜尋,找出不含 "root" 的行
grep -v "root" /var/log/auth.log

# 案例四:搜尋多個檔案中含 "timeout" 的行
grep "timeout" /var/log/nginx/*.log

# 案例五:遞迴搜尋目錄中所有 .log 檔
grep -r "failed" /var/log/

# 案例六:顯示匹配行的行號
grep -n "connection refused" /var/log/syslog

# 案例七:只列出含匹配字串的檔名
grep -l "listen" /etc/nginx/*.conf

# 案例八:計算匹配行數
grep -c "cron" /var/log/syslog

# 案例九:整字匹配 "cat",不抓到 "catalog"
grep -w "cat" animals.txt

# 案例十:顯示匹配行及其後 3 行
grep -A 3 "error" /var/log/syslog

# 案例十一:顯示匹配行及其前後 2 行
grep -C 2 "failed" /var/log/auth.log

# 案例十二:使用 Perl 正則表達式匹配 IP 位址
grep -P "\b\d{1,3}(\.\d{1,3}){3}\b" /var/log/syslog

# 案例十三:搜尋以 "user" 開頭的行
grep "^user" /etc/passwd

# 案例十四:搜尋以 ".com" 結尾的行
grep "\.com$" urls.txt

# 案例十五:同時搜尋多個關鍵字
grep -E "error|fail|timeout" /var/log/syslog

# 案例十六:搜尋特定範圍行,例如前 100 行
head -n 100 /var/log/syslog | grep "init"

# 案例十七:搜尋空白行
grep "^$" notes.txt

# 案例十八:搜尋含 tab 的行
grep -P "\t" data.txt

# 案例十九:搜尋不含指定字串的檔案
grep -L "password" /etc/*.conf

# 案例二十:將 grep 結果用管道傳給 wc 計數
grep "error" /var/log/syslog | wc -l

案例 12 詳細拆解(匹配 IP 168.95.4.24):


# 正則表達式:\b\d{1,3}(\.\d{1,3}){3}\b
# 拆解:
# \b           :單詞邊界,確保不抓到文字裡的數字
# \d{1,3}      :第一組數字 1~3 位,對應 IP 的 "168"
# (\.\d{1,3})  :一個點 + 1~3 位數字,對應第二、三、四組 IP
# {3}          :重複前面的 "點+數字" 三次,對應 ".95"、".4"、".24"
# \b           :單詞邊界,確保完整匹配整個 IP
# 套用範例 IP 168.95.4.24:
# 第一組 168 -> \d{1,3}
# 第二組 .95 -> (\.\d{1,3}) 的第一次
# 第三組 .4  -> (\.\d{1,3}) 的第二次
# 第四組 .24 -> (\.\d{1,3}) 的第三次
# 這樣就完整匹配整個 IP

FAQ 常見問題

Linux grep 指令可以搜尋哪些檔案?

grep 可以搜尋純文字檔案,包括系統日誌、程式碼與設定檔,只要是文字格式就能使用 grep,二進位檔則無法正確匹配。

grep 正則表達式怎麼學?

grep 支援基本與 Perl 正則表達式,建議先熟悉字元匹配、量詞與特殊符號,實務中常用於日誌篩選與資料分析,學會後可快速找到目標資料。

如何同時搜尋多個關鍵字?

使用 -E 參數,例如 “error|fail|timeout”,可以同時匹配多個關鍵字,適合檢查日誌中多種錯誤訊息。

如何顯示匹配行及前後內容?

使用 -C N、-A N 或 -B N,可以分別顯示匹配行前後 N 行,方便查看上下文,適合排查問題。

grep 與管道怎麼搭配使用?

grep 可透過管道傳給其他指令,例如 wc 計數或 sort 排序,方便統計或進一步處理搜尋結果,是系統管理常見技巧。

如何搜尋特定目錄下所有檔案?

使用 -r 或 -R 參數,grep 會遞迴搜尋指定目錄下所有檔案,對大型系統日誌分析非常實用。

    PAGE TOP