最後一組選項處理輸入、輸出和臨時檔案。例如, -c 選項,當它用于 sort -c < file 中時,它檢查輸入檔案是否已進行了排序(您也可以使用其它選項),如果已進行了排序,則報告一個錯誤。這樣,在處理可能需要花很長時間進行排序的大型檔案之前,可以很友善地對其進行檢查。當您将 -u 選項和 -c 選項一起使用時,會被解釋為一個請求:檢查輸入檔案中不存在兩個相同的行。
當您處理大型檔案時還有一個很重要的 -T 選項,它用于為臨時檔案(這些臨時檔案在 sort 完成工作之後會被除去)指定其它目錄,而不是預設的 /tmp 目錄。
您可以使用 sort 來同時處理多個檔案,這樣做的方式基本上有兩種:首先可以使用 cat 來并置它們,如下所示:
cat file1 file2 file3 | sort > outfile
或者,可以使用下面這個指令:
sort -m file1 file2 file3 > outfile
第二種情況有個條件:在将所有輸入檔案一起進行 sort -m 之前,每個檔案都必須經過排序。這看起來似乎是個不必要的負擔,但事實上這加快了工作速度并節約了寶貴的系統資源。對了,别忘了 -m 選項。在這裡您可以使用 -u 選項來禁止列印相同的行。
如果需要某種更深奧的排序方法,您可能要檢視 tsort 指令,該指令對檔案執行拓撲排序。拓撲排序和标準 sort 之間的差别如清單 2 所示(您可以從 參考資料下載下傳 happybirthday.txt)。
清單 2. 拓撲排序和标準排序之間的差别
$ cat happybirthday.txt
Happy Birthday to You!
Happy Birthday to You!
Happy Birthday Dear Tux!
Happy Birthday to You!
$ sort happybirthday.txt
Happy Birthday Dear Tux!
Happy Birthday to You!
Happy Birthday to You!
Happy Birthday to You!
>$ tsort happybirthday.txt
Dear
Happy
to
Tux!
Birthday
You!
當然,對于 tsort 的使用來說,這并非一個非常有用的示範,隻是舉例說明了這兩個指令輸出的不同。 tsort 通常用于解決一種邏輯問題,即必須通過觀察到的部分次序預測出整個次序;例如(來自 tsort 資訊頁中):
tsort <
a b c
d
e f
b c d e
EOF
會産生這樣的輸出:
a
b
c
d
e
f