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

Linux 文本處理四大金剛:sort、uniq、cut、wc 實戰筆記

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

文本處理是 Linux 日常運維與開發的核心技能。本文以 /etc/passwd 等實際文件為例,系統講解 sort、uniq、cut、wc 的常用參數與組合技巧。

sort:排序利器

sort [-fbMnrtuk] [file]
  • -f 忽略大小寫;-b 忽略前導空白;-M 按月份排序;-n 數值排序;-r 反向;-u 去重;-t 指定分隔符;-k 指定欄位範圍。

範例

# 按第 3 欄(UID)數值排序
cat /etc/passwd | sort -t ':' -k 3n
# 按第 6 欄第 2-4 字元排序,再按第 1 欄反向
cat /etc/passwd | sort -t':' -k 6.2,6.4 -k 1r

uniq:去重統計

前提:輸入必須已排序,否則只能去除相鄰重複行。

uniq [-icu]
  -i 忽略大小寫
  -c 計數顯示
  -u 僅顯示唯一行

範例

sort testfile | uniq -c   # 顯示每行出現次數
sort testfile | uniq -dc  # 僅顯示重複行及次數
sort testfile | uniq -u   # 僅顯示不重複行

cut:欄位擷取

cut -d'分隔字元' -f fields   # 有分隔符
cut -c 字元範圍               # 固定寬度

範例(以 PATH 為例)

echo $PATH | cut -d ':' -f 5           # 第 5 欄
echo $PATH | cut -d ':' -f 3,5         # 第 3、5 欄
echo $PATH | cut -d ':' -f 3-          # 第 3 欄到結尾
echo $PATH | cut -d ':' -f 1-3,5       # 第 1-3 及第 5 欄

wc:字數統計

wc [-lwm]
  -l 行數
  -w 單詞數(以空白分隔)
  -m 字元數(位元組)

範例

wc /etc/passwd        # 40 行 45 單詞 1719 位元組
wc -l /etc/passwd     # 統計帳號數

組合拳:管道流處理

# 統計 /etc/passwd 中唯一 Shell 種類數
cut -d: -f7 /etc/passwd | sort | uniq | wc -l
# 找出佔用行數最多的前 5 個 IP(假設日誌第 1 欄為 IP)
cut -d' ' -f1 access.log | sort | uniq -c | sort -nr | head -5

熟練這四大工具,文本分析效率提升數倍。

Copyright © Windows教程網 All Rights Reserved