sort命令

keeking發表於2010-02-26
sort命令可以用來排序,如
$ sort names
Charlie
Emanuel
Fred
Lucy
Ralph
Tony
Tony
$
預設按升序排列,排序的依據是字元的編碼。
下面介紹一下sort的一些常用引數
1. -u 選項
該選項可以用來過濾重復項,如
$ sort -u names  >>>>相當於 sort | uniq
Charlie
Emanuel
Fred
Lucy
Ralph
Tony
$
2. -r 選項
該選項可以按相反的方向進行排序,如
$ sort -r names                                       
Tony
Tony
Ralph
Lucy Fred
Emanuel
Charlie
$
3. -o 選項
該選項可以指定將排序的結果儲存到那裡,也許有人會說,我們可以使用輸出重定向完成呀,的確,輸出重定向可以完成,如sort  names > file,但是如果我們想將排序的結果寫回到原檔案時,輸出重定向就不行了,如 sort  names > names,此時names檔案已經沒有內容了,內容被完全擦出了,像這種情況,我們就可以使用-o選項來完成。
4.
-n 選項
該選項可以指定將某列按數字對待,然後根據該列排序,如data檔案
$ cat data
5 27
2 12
3 33
23 2
-5 11
15 6
14 -9
$
如果我們想將結果按第一行的數字排序,此時我們就可以使用-n選項
$ sort -n data
 -5 11
2 12
3 33
5 27
14 -9
15 6
23 2
$
 sort -k2 wos  按第二列排序
 sort -k3 wos  按第二列排序

語法解釋:

  sort -t, -k1   

 -t,   指定檔案記錄域分隔符為","  

 -k1  是指根據第1列進行排序


如果我們想按第二列的數字排序呢,應該怎麼做,這個也可以在n的前面加上數字來完成。如sort  +1n data 就會將第一列忽略,按照第二列的數字來排序,同理,sort  +5n data會忽略前五列,按第六列排序。那麼列是如何區分的呢,預設的sort是按空格個或TAB來區分的,如果我們的檔案不是按空格或TAB呢,這時候我們就要指定使用什麼來分割,可以使用-t選項來指定分割的字元,如sort +2n -t: file,此時sort將會使用:來分割列,並忽略前兩列,按第三列排序。看下面的例子

$ sort +1n data
14 -9
23 2
15 6
-5 11
2 12
5 27
3 33
$




來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7899089/viewspace-627894/,如需轉載,請註明出處,否則將追究法律責任。

相關文章