萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux grep 指令 12 大實戰範例:從檔案搜尋到正則表達式進階用法

grep 是 Linux 系統預裝的最強大文字模式搜尋工具。本文精選 12 個實戰範例,涵蓋套件查詢、設定檔過濾、檔案尋找、行號顯示、遞歸搜尋、精確匹配、壓縮檔搜尋、正則表達式等核心場景,助你從入門到精通。

grep 指令示意

安裝確認


# Debian/Ubuntu
sudo apt-get install grep
# RHEL/CentOS/Fedora
sudo yum install grep

12 大實戰範例

1. 套件搜尋:找出已安裝的 Python 相關套件


dpkg -l | grep -i python
# -i 忽略大小寫 (grep 預設區分大小寫,養成加 -i 習慣)

輸出範例:


ii  python2.7        2.7.3-0ubuntu3.4  Interactive high-level object-oriented language
ii  python-openssl   0.12-1ubuntu2.1   Python wrapper around the OpenSSL library

2. 設定檔去註解:移除 Apache 設定檔中所有註解行


grep -v '^#' /etc/apache2/sites-available/default-ssl
# -v 反向匹配:輸出**不包含**模式的行
# ^# 匹配行首為 # 的行 (較精確)

3. 尋找特定檔案:找出 JayZ 的 MP3 且排除 Remix


find . -name "*.mp3" | grep -i jayz | grep -vi remix
# 管線串聯多層過濾

4. 顯示匹配行前後文脈 (-A/-B/-C)


ifconfig | grep -A 4 eth0   # 顯示匹配行及後 4 行 (After)
ifconfig | grep -B 2 UP     # 顯示匹配行及前 2 行 (Before)
ifconfig | grep -C 2 lo     # 顯示匹配行前後各 2 行 (Center)

記憶口訣:A=After、B=Before、C=Center

5. 計算匹配行數 (-c)


ifconfig | grep -c inet6
# 等同 grep ... | wc -l 但更高效

6. 顯示匹配行號 (-n) - 除錯利器


grep -n "main" setup.py
# 輸出: 10:def main():

7. 遞歸搜尋目錄樹 (-r)


grep -r "function" *
# 當前目錄及所有子目錄搜尋 "function"

8. 精確單詞匹配 (-w)


ifconfig | grep -w "RUNNING"  # 僅匹配完整單詞 RUNNING
ifconfig | grep -w "RUN"      # 無輸出 (RUN 非獨立單詞)

9. 壓縮檔直接尋 (zgrep)


zgrep -i error /var/log/syslog.2.gz
# 直接搜尋 .gz 檔案,無需先解壓

10. 擴展正則表達式 (egrep / grep -E)


grep -E 'pattern1|pattern2' file  # 或邏輯
egrep '^\s*(if|while|for)\b' *.c  # C 語言關鍵字搜尋
# 支援 + ? | () 等擴展元字元

11. 固定字串搜尋 (fgrep / grep -F)


fgrep -f patterns.txt target.txt
# patterns.txt 每行一個模式,fgrep 逐行固定字串匹配 (無正則解析,速度極快)

12. 組合招:找出包含 TODO 的程式碼並顯示行號、前後文脈


grep -rn -C 3 -w "TODO" --include="*.py" --include="*.js" .
# -r 遞歸 -n 行號 -C 3 前後3行 -w 精確單詞 --include 限定副檔名

進階技巧

  • 色彩輸出:export GREP_OPTIONS='--color=auto' (已棄用) → 建議 alias grep='grep --color=auto'
  • 排除目錄:grep -r --exclude-dir=.git --exclude-dir=node_modules pattern .
  • 只輸出檔名:grep -l pattern *.txt
  • 無匹配時退出碼:grep -q pattern file && echo "found"

grep 是文字處理的瑞士刀,熟練掌握這 12 大場景與參數組合,能解決 90% 以上的搜尋過濾需求。

copyright © 萬盛學電腦網 all rights reserved