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 # 內建參數寫入(可覆蓋原檔)
# 以第 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。LC_COLLATE)規則;需純 ASCII 排序可設 export LC_ALL=C。TMPDIR),確保磁碟空間足夠。