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 [-bcdfimMnr] [-o 輸出檔] [-t 分隔字元] [+起始欄位-結束欄位] [--help] [--version] [檔案...]

sort 以「行」為單位對文字檔內容排序,支援多欄位、數值、月份、反向等多種模式,常搭配管道線處理輸出流。

常用參數速查表

參數功能說明
-b忽略每行開頭的空白字元
-c檢查檔案是否已排序(無輸出表示已排序)
-d字典序:僅比較英數字與空白,忽略標點符號
-f忽略大小寫(視小寫為大寫)
-i忽略不可列印字元(保留 ASCII 040-176)
-m合併多個「已排序」檔案(不重新排序)
-M依月份縮寫排序(JAN < FEB ...)
-n依數值大小排序(支援負號與小數點)
-o FILE將結果寫入指定檔案(可同輸入檔)
-r反向排序(由大到小 / Z 到 A)
-t CHAR指定欄位分隔字元(預設為空白/Tab)
+START-END舊語法:指定排序鍵值範圍(欄位從 0 起算)
-k START[,END]新語法:指定排序鍵值欄位(推薦使用,欄位從 1 起算)

實戰範例集

基本排序

$ cat text
vegetable soup
fresh vegetables
fresh fruit
lowfat milk

$ sort text
fresh fruit
fresh vegetables
lowfat milk
vegetable soup

同首字時自動比對次字(vegetables vs fruit)。

儲存結果

sort text > result          # 導向輸出
sort -o result text         # 內建參數寫入(可覆蓋原檔)

指定欄位排序(新語法 -k 推薦)

# 以第 2 欄位為鍵值排序
sort -k 2 example

# 以第 2 欄位第 1 字元為鍵值,反向排序並輸出至 outfile
sort -r -o outfile -k 2.1,2.1 example

管道線進階應用

# 列出目錄檔案,以第 6-8 欄位(檔案大小、月、日)排序
ls -l | sort -k 6,8

# 依指令名稱首字母排序進程
ps -e -o "comm pid time" | sort -d

# 合併多檔並排序去重
cat veglist fruitlist | sort -u > clist

進階技巧

  • sort -u:輸出唯一行(去重),等同 sort | uniq 但更高效。
  • sort -n -k 3:第 3 欄位按數值排序(適用日誌分析)。
  • sort -t ':' -k 3n /etc/passwd:以 : 分隔,第 3 欄位(UID)數值排序。

注意事項

  • 舊式 +起始-結束 語法已棄用,請改用 -k。
  • 排序預設以當前 Locale(LC_COLLATE)規則;需純 ASCII 排序可設 export LC_ALL=C。
  • 大檔案排序會使用暫存檔(TMPDIR),確保磁碟空間足夠。
Copyright © Windows教程網 All Rights Reserved