Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Linux 管道命令大全:cut、grep、sort、uniq、wc、tee、tr、join、paste、split、xargs 實戰詳解

編輯:Linux 系統常見問題解答

管道核心概念

| 將前一命令的 標準輸出 (stdout) 傳遞給後一命令的 標準輸入 (stdin)。不處理標準錯誤 (stderr),需用 2>&1 重導向。右側命令必須支援 stdin 流式處理(如文本處理工具)。

常用管道右側命令詳解

1. cut - 列擷取

cut -d ':' -f 1,3 /etc/passwd      # 以 : 分隔,取第 1、3 欄
cut -c 1-10 file.txt               # 按字符位置擷取 1-10 字元
ls -l | cut -c 1-10                # 管道接收 ls 輸出

2. grep - 模式搜尋

grep -i "error" /var/log/syslog    # 忽略大小寫搜尋
grep -n "pattern" file             # 顯示行號
grep -v "exclude" file             # 反向匹配(排除)
ps aux | grep nginx                # 管道過濾進程

3. sort - 排序

sort file.txt                      # 字典序排序
sort -n numbers.txt                # 數值排序
sort -r file.txt                   # 反向排序
sort -t ':' -k 3 /etc/passwd       # 按第 3 欄排序
sort -u file.txt                   # 排序並去重(等同 sort | uniq)

4. uniq - 去重

sort file.txt | uniq               # 必須先排序
sort file.txt | uniq -c            # 顯示重複次數
sort file.txt | uniq -d            # 僅顯示重複行
sort file.txt | uniq -u            # 僅顯示唯一行

5. wc - 統計

wc -l file.txt      # 行數
wc -w file.txt      # 單詞數
wc -m file.txt      # 字符數
cat /etc/passwd | wc -l  # 統計用戶數

6. tee - 分流輸出

echo "log" | tee -a log.txt        # 同時輸出螢幕並追加寫入檔案
ls -l | tee filelist.txt | grep "txt"  # 存檔同時繼續管道

7. tr - 字符轉換/刪除

echo "HELLO" | tr 'A-Z' 'a-z'      # 大小寫轉換
cat file | tr -d '\r'              # 刪除 ^M (Windows 換行)
cat file | tr -s ' '               # 壓縮連續空格為單個

8. join - 關聯兩文件

join -t ':' -1 1 -2 1 file1 file2  # 以 : 分隔,按兩文件第 1 欄關聯
# 前提:兩文件需先按關聯鍵排序

9. paste - 並排合併

paste file1 file2                  # Tab 分隔合併
paste -d ':' file1 file2           # 指定分隔符
paste - - < file.txt               # 將單列轉為兩列

10. expand - Tab 轉空格

expand -t 4 file.txt               # Tab 展開為 4 空格

11. split - 檔案分割

split -b 100M bigfile part_        # 按大小分割
split -l 1000 bigfile part_        # 按行數分割
cat part_* > bigfile               # 合併還原

12. xargs - 參數轉命令

find . -name "*.log" | xargs rm -f        # 批量刪除
ls *.txt | xargs -n 2 mv -t backup/       # 每 2 個參數執行一次 mv
echo "a b c" | xargs -n 1 echo            # 每行一個參數
# -0 配合 find -print0 處理特殊文件名

組合拳實戰

# 統計日誌中出現最多的前 10 個 IP
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10

# 查找佔用磁碟最大的 5 個目錄
du -h --max-depth=1 | sort -hr | head -5

# 批量重命名:將 .htm 後綴改為 .html
ls *.htm | xargs -I {} mv {} {}.html

總結

管道是 Linux 「小工具組合大功能」哲學的體現。熟練掌握 cut/grep/sort/uniq/wc/tee/tr/join/paste/split/xargs 及其常用參數,能將複雜文本處理任務拆解為優雅的一行命令。建議多實戰、多組合,養成「管道思維」。

Copyright © Windows教程網 All Rights Reserved