一個命令對文字進行高效排序
在 下,有時候需要對文字內容進行排序,例如按照字典順序排序,按照數字排序或者按照特定列排序等等。今天我們就藉助一個命令-sort來滿足我們對文字排序的需求。 |
按照字典順序排序
假如有文字內容test1.txt如下(偷偷問一句:你在使用哪個linux發行版?):
Debian Gentoo GentooCentOSFedora ubuntu Kali redhat Arch OpenSuse
現在要對文字內容按照字典升序排序,只需使用下面的命令即可:
sort test1.txt
輸出結果如下:
Arch CentOS Debian Fedora Gentoo Gentoo Kali OpenSuse redhat ubuntu
可以看到輸出結果按照字典順序的升序進行了排序。如果需要降序輸出只需要使用-r引數,如:
sort -r test1.txt
輸出結果如下:
ubuntu redhat OpenSuse Kali Gentoo Gentoo Fedora Debian CentOS Arch
去除重複行
我們看到前面有兩行的內容是重複的,即Gentoo行,使用-u引數可以去掉重複的行:
sort -u test1.txt
輸出結果如下:
Arch CentOS Debian Fedora Gentoo Kali OpenSuse redhat ubuntu
在輸出結果中,重複的Gentoo行被去掉了。
按照數字排序
假設有文字內容test2.txt如下,第一列為市值排名,第二列為公司名稱,第三列為公司建立時間:
2 google 1998 10 icbc 1984 5 tencent 1998 1 apple 1976 16 samsung 1938
按照前面的介紹,我們對內容排序結果如下:
10 icbc 1984 16 samsung 1938 1 apple 1976 2 google 1998 5 tencent 1998
這不對啊,16怎麼在1前面呢?很顯然這是因為前面的排序都是字典排序,而我們實際需要的是按照數值大小進行排序,因此需要用到-n引數:
sort -n test2.txt
最後的輸出結果如下:
1 apple 1976 2 google 1998 5 tencent 1998 10 icbc 1984 16 samsung 1938
可以看到,最終結果按照市值排名列印出來。
按照指定列排序
假如我們不想按照市值排名排序,而是按照公司名稱排序呢?那麼就需要按照指定列排序了。這裡需要用到兩個引數:
-t 指定分隔符,未指定時,預設分隔符為空白
-k 指定列排序
需要按照第二列,公司名稱排序,因此排序命令如下:
sort -k 2 test2.txt #預設以空白作為分隔符
sort -k 2 -t ' ' sort2.txt #以空格為分隔符
結果如下:
1 apple 1976 2 google 1998 10 icbc 1984 16 samsung 1938 5 tencent 1998
可以看到,最後會以第二列,即公司名稱為依據排序輸出。
以多列為依據排序
假設我們按照公司建立年份排序,如果年份相同,則按照公司名稱排序,即分別以第三列,第二列為依據排序:
sort -n -k 3 -k 2 test2.txt
輸出結果如下:
16 samsung 1938 1 apple 1976 10 icbc 1984 2 google 1998 5 tencent 1998
如果要按照年份降序排序,則只需加-r引數即可:
sort -n -k 3r -k 2 test2.txt
輸出結果如下:
2 google 1998 5 tencent 1998 10 icbc 1984 1 apple 1976 16 samsung 1938
按照特定列的特定字元排序
假如我們想要按照公司名稱的第二至第三個字元排序,可以使用下面的方式:
sort -t ' ' -k 2.2,2.3 test2.txt
輸出結果如下:
16 samsung 1938 10 icbc 1984 5 tencent 1998 2 google 1998 1 apple 1976
-k 2.2,2.3指定了按照第二列排序,並且是第二列的第二個字元開始,到第三個字元結束。可以看到,由於samsung的第二個字母是a而排在開頭。如果是以第二個字元開始,到最後一個字元結束,則用下面的命令即可:
sort -t ' ' -k 2.2 test2.txt
儲存排序結果
前面的排序命令僅僅是將排序結果列印到控制檯,並沒有修改原始檔,如果想要將排序結果儲存在檔案中,需要使用-o引數:
sort test1.txt -o test1.txt #直接修改原始檔 sort test1.txt -o output.txt #輸出到另外一個檔案 sort test1.txt > output.txt #重定向到output.txt中
如果想將排序結果儲存在原始檔中,只能使用-o引數,而如果是其他檔案,既可以使用-o引數,也可以使用重定向。
檢查是否亂序
sort同樣也可以用來檢查文字內容是否已經是排好序的。
例如:
sort -c test1.txt #列印結果,並告知無序開始的行數 sort -C test1.txt #不列印結果,但是命令的返回結果為1
合併已排序的文字
可以使用-m選項來合併已經排好序的文字,但不會重新排序。
例如:
sort -m file1 file2
總結
以上就是使用sort命令對文字進行排序的常見使用方法,更多內容可使用man命令進行檢視。常見選項如下:
-r 按照降序排列 -n 按照數值大小排列 -k 按照指定列排列 -t 指定分隔符 -u 去重 -o 輸出結果到檔案中
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2221512/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux 中awk命令實現按照 指定的字元對文字進行排序Linux字元排序
- 對N個數進行排序排序
- 對字典進行排序排序
- Java使用Collections對中文字元進行首字母排序Java字元排序
- 對N個數進行從大到小排序排序
- Python對字典進行排序Python排序
- java對中文(拼音)進行排序Java排序
- C語言-對一個結構體中的欄位進行排序C語言結構體排序
- 在命令列用 sort 進行排序命令列排序
- 如何按最後修改時間對 ls 命令的輸出進行排序排序
- python 對字典的值進行排序Python排序
- ORDER對查詢結果進行排序排序
- 使用XPathExpression類對XML進行排序 (轉)ExpressXML排序
- 使用Collections對list的內容進行排序排序
- Js比較對Object型別進行排序JSObject型別排序
- jQuery對Table一個欄位排序jQuery排序
- 如何在dhtmlxGantt網格中對任務進行排序和重新排序HTML排序
- 如何在Python中對dicts列表進行排序Python排序
- Django(76)isort工具對import匯入進行排序DjangoImport排序
- 對list集合中的物件進行排序(轉載)物件排序
- Visio對一個物件進行水平翻轉物件
- Android字型渲染器——使用OpenGL ES進行高效文字渲染Android
- 兩組資料量相對大時,如何高效進行比對
- 【微信小程式開發(6)--- 長按文字進行賦值 selectable, 對文字內容進行解碼】微信小程式賦值
- 用xgboost模型對特徵重要性進行排序模型特徵排序
- 147. 對連結串列進行插入排序排序
- iOS中對NSArray中自定義的物件進行排序iOS物件排序
- 使用oracle decode對錶字元列進行order by 排序Oracle字元排序
- 在Java中對集合當中的物件進行排序Java物件排序
- 對比Elasticsearch,使用Doris進行高效日誌分析(下)Elasticsearch
- 對比Elasticsearch,使用Doris進行高效日誌分析(上)Elasticsearch
- 用java.util.Collections中的sort方法對兩個類的物件進行排序Java物件排序
- Linux中ls對檔案進行按大小排序和按時間排序Linux排序
- java stream()流對兩個集合進行比對Java
- 對find命令的進一步瞭解
- 直播app開發,對字串中字元進行自然順序排序APP字串字元排序
- 力扣 147. 對連結串列進行插入排序力扣排序
- JavaScript 使用sort()方法從數值上對陣列進行排序JavaScript陣列排序