一個Linux命令sort幫你對文字排序
阿新 • • 發佈:2018-11-26
在Linux下,有時候需要對文字內容進行排序,例如按照字典順序排序,按照數字排序或者按照特定列排序等等。今天我們就藉助一個命令-sort來滿足我們對文字排序的需求。
選項 | ||
---|---|---|
預設情況下,按照以行構成的字串為單位,按字典順序升序排序 | ||
-n | 按數值大小排列 | |
-r | 逆序排序 | |
-u | 去重 | |
-k | 指定列排序 | |
-t | 指定分隔符,未指定時,預設分隔符為空白 | |
以多列為依據排序 | sort -n -k 3 -k 2 test2.txt | |
按照特定列的特定字元排序 | sort -t ’ ’ -k 2.2,2.3 test2.txt | |
-m | 合併已經排好序的文字,但不會重新排序 | sort -m file1 file2 |
待處理的檔案
2 google 1998
10 icbc 1984
5 tencent 1998
1 apple 1976
16 samsung 1938
以多列為依據排序,假設按照公司建立年份排序,如果年份相同,則按照公司名稱排序,即分別以第三列,第二列為依據排序:sort -n -k 3 -k 2 test.txt,輸出結果如下:
16 samsung 1938
1 apple 1976
10 icbc 1984
2 google 1998
5 tencent 1998
如果要按照年份降序排序,則只需加-r引數即可:sort -n -k 3r -k 2 test.txt
按照特定列的特定字元排序,假如我們想要按照公司名稱的第二至第三個字元排序,可以使用下面的方式:sort -t ’ ’ -k 2.2,2.3 test.txt,輸出結果如下,-k 2.2,2.3指定了按照第二列排序,並且是第二列的第二個字元開始,到第三個字元結束
16 samsung 1938
10 icbc 1984
5 tencent 1998
2 google 1998
1 apple 1976
如果是以第二個字元開始,到最後一個字元結束,則用下面的命令即可:sort -t ’ ’ -k 2.2 test.txt