Linux之sort命令使用入門詳解

pythontab發表於2016-10-14

sort是在Linux裡非常常用的一個命令,將檔案的每一行作為一個單位,相互比較,比較原則是從首字元向後,依次按ASCII碼值進行比較,最後將他們按升序輸出。

這裡有一個檔案test,內容為:

8723 23423

321324 213432

23 234

123 231

234 1234

654 345234

    

1. sort的-t選項和-k選項

sort提供了-t選項,後面可以設定間隔符, -k來指定列數。


對第一列排序

sort test

對第二列進行排序

sort -k 2 test

如果將test檔案的內容改為:

8723,23423

321324,213432

23,234

123,231

234,1234

654,345234

如果要對第二列按照大小排序

sort -t "," -k 2 test

如果沒有-t選項的話,就是預設的空格或者tab鍵,因此上面就沒有使用-t選項。


2. 倒序排列使用 -r 選項

sort預設的排序方式是升序,-r引數則是改成降序

sort -r test

輸出結果:

8723 23423

654 345234

321324 213432

234 1234

23 234

123 231


3. sort的-n選項

sort預設按ASCII碼值進行比較, 所以大家看上面2中的結果會發現, 8723 比 321324 卻排在了最前面。 那我們如何讓它按照數字大小排序呢?這時候就該-n引數出場了。

sort -n test

輸出結果:

23 234

123 231

234 1234

654 345234

8723 23423

321324 213432

sort -rn test

輸出結果:

321324 213432

8723 23423

654 345234

234 1234

123 231

23 234



附:sort命令引數詳解


-f  將小寫字母都轉換為大寫字母來進行比較,亦即忽略大小寫


-c  檢查檔案是否已排好序,如果亂序,則輸出第一個亂序的行的相關資訊,最後返回1


-C  檢查檔案是否已排好序,如果亂序,不輸出內容,僅返回1


-M  以月份來排序,比如JAN小於FEB等等


-b  忽略每一行前面的所有空白部分,從第一個可見字元開始比較


-u  在輸出行中去除重複行, 不改變檔案本身內容


相關文章