LinuxMastery By asdlkfj

LinuxMastery 11: 搜尋神器 grep

在大海中撈針

grep (Global Regular Expression Print) 是 Linux 上最強大的文字搜尋工具。無論是從幾 GB 的 Log 檔中找錯誤,還是從原始碼中找變數定義,grep 都是你的好朋友。它支援 Regular Expression (正規表示式),能進行極其複雜的匹配。

核心指令詳解

  • 基本用法

    grep "keyword" filename
    
  • 常用參數

    • -i (ignore case):忽略大小寫。搜尋 "error" 會匹配 "Error", "ERROR"。
    • -r (recursive):遞迴搜尋目錄下的所有檔案。
    • -n (line number):顯示關鍵字在哪一行。
    • -v (invert):反向搜尋。顯示包含關鍵字的行。
    • -A 5 (After):除了顯示匹配行,還多顯示後面 5 行 (看 Log 上下文很有用)。
    • -B 5 (Before):多顯示前面 5 行。

實戰範例

  1. 搜尋專案中的程式碼

    # 在當前目錄及子目錄中,尋找所有包含 "db_connection" 的檔案,並顯示行號
    grep -r -n "db_connection" .
    
  2. 排除雜訊

    # 查看設定檔,但去除註解行 (# 開頭) 和空行
    grep -v "^#" /etc/nginx/nginx.conf | grep -v "^$"
    

    這裡用了 ^ (行首) 和 $ (行尾) 的正規表示式概念。

實戰心法

當你使用 tail -f 監控即時 Log 時,配合 grep 可以過濾掉大量無關資訊。例如 tail -f access.log | grep "404",這樣你就只會看到發生 404 錯誤的請求,讓監控變得一目了然。