Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 管道與過濾器核心技法:grep、sort、pg/more 管線實戰

編輯:Linux 教學

Unix 哲學核心:「做一件事,做好它;輸出作為下一個程式的輸入。」管道 (|) 將獨立工具串聯成強大資料流水線。本文系統講解管道機制、三大經典過濾器 grep/sort/pg/more 參數與組合實戰。

管道機制

  • cmd1 | cmd2:cmd1 標準輸出 → cmd2 標準輸入
  • 核心在記憶體建立環形緩衝區 (預設 64KB),雙向同步阻塞
  • 進程並發執行,資料流式處理,**無臨時檔案**
  • 除管道外:共享記憶體、訊息佇列、信號、Socket 等 IPC 機制

grep:模式匹配過濾器

grep [選項] 模式 [檔案...]

核心選項

選項功能
-v反向匹配 (輸出不含模式的行)
-n顯示行號
-l僅列出匹配的檔案名
-c統計匹配行數
-i忽略大小寫
-r遞歸目錄
-E擴展正則 (ERE)
-F固定字串 (fgrep),速度最快
--line-buffered行緩衝,配合管道即時輸出

管道實戰

# 列出 8 月修改的檔案
ls -l | grep "Aug"

# 管道鏈:過濾 8 月 → 按大小排序 (第 5 欄數值)
ls -l | grep "Aug" | sort -k5 -n

# 遞歸搜尋含 "error" 的 .log 檔,忽略大小寫,顯示行號
grep -rin "error" /var/log/*.log

# 固定字串搜尋 (最快)
grep -F "TODO" src/*.c

sort:排序過濾器

sort [選項] [檔案...]

關鍵選項

選項功能
-n數值排序 (10 > 2)
-r反向 (降序)
-f忽略大小寫
-k N指定第 N 欄 (1-based)
-t 字元指定分隔符 (預設空白)
-u去重 (配合 uniq)

舊式 +N 語法對照

sort +4n   # 等同 sort -k5 -n (第 5 欄數值升序)
sort +1 -2 # 第 2 欄至第 3 欄

分頁檢視:pg / more / less

  • more:向下翻頁 (Space)、向上 (b)、搜尋 (/) —— 僅前向
  • less:雙向捲動、搜尋、標記、F 尾部追蹤 (如 tail -f) —— **推薦**
  • pg:System V 風格,較少見

管道接分頁

ls -lR /etc | grep "\.conf$" | sort -k5 -nr | less
# 或直接
less +F /var/log/syslog  # 即時尾部追蹤

完整管線實戰:分析 Apache 存取日誌

# 找出 404 錯誤最多的前 10 個 URL
awk '$9 == 404 {print $7}' access_log | sort | uniq -c | sort -rn | head -10

# 統計各 IP 請求數前 20
awk '{print $1}' access_log | sort | uniq -c | sort -rn | head -20

# 即時監控 5xx 錯誤
tail -f access_log | awk '$9 ~ /^5/ {print strftime("%H:%M:%S"), $0}'

管道將「小工具」組裝成「大系統」。熟記 grep -v 反濾、sort -kNn 多欄數值排、less +F 即時看,日誌分析無往不利。

Copyright © Windows教程網 All Rights Reserved