1. 程式人生 > >一個Linux命令sort幫你對文字排序

一個Linux命令sort幫你對文字排序

在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