1、sort的工作原理
sort將檔案的每一行作為一個單位,相互比較,比較原則是從首字元向後,依次按ASCII碼值進行比較,最後將他們按升序輸出。
# cat file.txtbananaapplepearorangepear
2、sort的-u選項:輸出行中去除重複行
# sort -u file.txtapplebananaorangepear
3、sort的-r選項:降序
# sort -r file.txtpearorangebananaapple
4、sort的-o選項:重新導向檔案
# sort -r file.txt -o sorted.txt
5、sort的-n選項:已數字來進行排序
# cat number.txt51101243# sort -n number.txt13451012
6、sort的-t選項和-k選項
# cat fruit.txtbanana:30:5.5apple:10:2.5pear:90:2.3orange:20:3.4
上述檔案有三列,列與列之間用冒號隔開了。第一列表示水果類型、第二列表示水果數量、第三列表示水果價格。
那麼我想以水果數量來排序,也就是以第二列來排序,如何利用sort實現?
sort提供了-t選項,後面可以設定間隔符。(是不是想起了cut和paste的-d選項,共鳴~~)
指定了間隔符之後,就可以用-k來指定列數了。
# sort -n -k 2 -t : fruit.txtapple:10:2.5orange:20:3.4banana:30:5.5pear:90:2.3
在使用-k選項的時候需要注意的事情:
# sort -n -k 2 -k 3 -t : fruit.txtapple:10:2.5orange:20:3.4banana:30:5.5pear:90:2.3
-k可以使用過個,上列命令其意思是,當以第二列排序時,遇到相同的話,就已第三列繼續排序,預設的是已第一列。
# sort -k 1.2,1.2 -t : fruit.txtbanana:30:5.5pear:90:2.3apple:10:2.5orange:20:3.4
由於只對第二個字母進行排序,所以我們使用了-k1.2,1.2的表示方式,表示我們“只”對第二個字母進行排序。(如果你問“我使用-k1.2怎麼不行?”,當然不行,因為你省略了End部分,這就意味著你將對從第二個字母起到本域最後一個字元為止的字串進行排序)。
7、sort的-f選項:忽略大小寫
該命令很簡單就不此描述了。