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 sort 命令實戰:去重、反序、多鍵值排序與欄位分隔完整指南

編輯:關於 Linux

sort 是 Linux 文字處理三劍客之一,依 ASCII 碼逐字元比較排序,支援欄位分隔、數值排序、多層次鍵值、去重等功能,是日誌分析、資料清洗的基礎工具。

sort 排序示意圖

核心參數速查

參數功能
-u唯一輸出(去除重複行)
-r反向排序
-n數值比較(而非字典序)
-f忽略大小寫
-t <字元>指定欄位分隔字元(預設空白)
-k <範圍>指定排序鍵值範圍 FStart.CStart,FEnd.CEnd
-o <檔案>輸出至檔案(可覆蓋輸入檔)

鍵值範圍語法詳解 -k FStart.CStart,FEnd.CEnd

  • FStart:起始欄位編號(從 1 開始)。
  • CStart:起始欄位內字元位置(從 1 開始,省略為欄位開頭)。
  • FEnd:結束欄位編號(省略為行尾)。
  • CEnd:結束欄位內字元位置(省略為欄位結尾)。
  • 修飾字元可附加於欄位後:n 數值、r 反序、f 忽略大小寫。

實戰範例

1. 去除重複行

sort -u filename

2. 反序排序

sort -r filename

3. 數值排序(第 2 欄)

sort -t',' -k2,2n data.csv

4. 多層次排序:第 2 欄數值升序,第 1 欄反序

sort -t',' -k2,2n -k1,1r data.csv

5. 複雜範例:第 2 欄第 2 字元 到 第 3 欄第 1 字元 數值排序,再第 1 欄反序

sort -n -k 2.2,3.1 -k 1,1r facebook.txt

6. 指定分隔符為冒號,按第 3 欄數值排序 /etc/passwd

sort -t':' -k3,3n /etc/passwd

7. 忽略大小寫排序

sort -f filename

8. 輸出至新檔(可安全覆蓋原檔)

sort -o output.txt input.txt

進階技巧

  • 穩定排序:加入 -s 參數保持相等鍵值的原始相對順序。
  • 隨機排序:sort -R(GNU sort 支援)。
  • 版本號排序:sort -V 正確處理 1.2.10 > 1.2.9。
  • 記憶體限制:-S 1G 限制記憶體使用,超過改用暫存檔。
  • 平行排序:--parallel=4 多執行緒加速(大檔案顯著提升)。

常見陷阱

現象原因解決
數字 10 排在 2 前面字典序比較加 -n 數值排序
欄位對不齊分隔符非單一空白用 -t 指定正確分隔符
-k 範圍不生效欄位編號從 1 非 0確認欄位編號正確

sort 看似簡單,但 -k 靈活的欄位範圍與修飾字元組合,能處理極複雜的多層次排序需求。建議搭配 cut、awk、uniq 組成文字處理管線,發揮最大效用。

Copyright © Windows教程網 All Rights Reserved