sort 可以在相當程度下處理資料表。若說
sort student.dat所得的結果應該是
因為沒有兩個人的學號一樣,所以這就相當於是對學號做排序。 而且,其效果與86014000 徐珍聖 M xuzs 86110900 王琇凱 M wangxk 87015800 褚永培 F chuyp 87007900 周淑文 F zhousz 87113600 鄒男鈞 M zounj 87114100 杜霖雅 F dulx 87250500 蔡君宗 M caijz
sort -n student.dat相同,因為學號全都是八位數。
sort 可以更精確地針對欄位資料排序。 只要以 -t ' ' 告訴 sort:欄位隔間符號 (field separator) 是空格。 隔間符號本身不會 (也不能) 屬於任何欄位內的資料。 如果連續出現兩個隔間符號,例如兩個空格,sort 會認為它們之間有一個空的欄位。 因此,作為資料表格的文字檔,要非常小心這個現象。
然後以 -k N 告訴 sort 要針對第 N 個欄位排序。 其中 N 是一個正整數,欄位的編號從 1 數起。 所以,
sort student.dat的效果和
sort -t ' ' -k 1 student.dat的效果完全一樣。
但是,
sort -t ' ' -k 3 student.dat就有趣了,它是要 sort 按照性別排序,結果是
當第 N 個欄位資料相同時,sort 按照第 N+1 個欄位的資料來排序,依此類推。 同理,以下指令是要 sort 按照帳號名來排序:87015800 褚永培 F chuyp 87114100 杜霖雅 F dulx 87007900 周淑文 F zhousz 87250500 蔡君宗 M caijz 86110900 王琇凱 M wangxk 86014000 徐珍聖 M xuzs 87113600 鄒男鈞 M zounj
sort -t ' ' -k 4 student.dat
更精細地,
sort -t ' ' -k 1.3 student.dat是要 sort 按照第 1 個欄位內的第 3 個字元來排序。結果是
當第 3 個字元相同的時候,sort 按照第 4 字元來排序,依此類推。 這樣做的結果,可以做一般生、甄試生、轉學生的分類 (以中大的學號規則而言)。86014000 徐珍聖 M xuzs 87015800 褚永培 F chuyp 87007900 周淑文 F zhousz 86110900 王琇凱 M wangxk 87113600 鄒男鈞 M zounj 87114100 杜霖雅 F dulx 87250500 蔡君宗 M caijz
習題
注意:此處所有文件均為原著,個別的版權宣告日後會一一公布, 整體版面設計亦尚未完成。但仍請勿抄襲文字與圖片,以免觸犯著作權法。
Created: Nov 19, 2000
Last Revised: Nov 19, 2000
© Copyright 2000 Wei-Chang Shann 單維彰