Linux命令之sort

sort命令常用于對統(tǒng)計日志中不同服務錯誤的數(shù)量進行排序,現(xiàn)在我們就一起花5分鐘來學習sort命令!

sort的工作原理

sort將文件的每一行作為一個單位,相互比較,默認比較規(guī)則是從首字符向后,依次按ASCII碼值進行比較,最后將他們按升序輸出。
舉個例子:

[root@vm3 ~]# cat test.txt 
zhangyishan 24 5678
yangzi 25 3400
wangyuan 20 2388
yangzi 25 3400
yangyang 25 2388
[root@vm3 ~]# sort test.txt 
wangyuan 20 2388
yangyang 25 2388
yangzi 25 3400
yangzi 25 3400
zhangyishan 24 5678

2.sort的-u選項

-u的作用就是在輸出行中去重復

[root@vm3 ~]# sort -u test.txt 
wangyuan 20 2388
yangyang 25 2388
yangzi 25 3400
zhangyishan 24 5678

3.sort 的-r選項

sort 的-r選項,是按照倒序排列

zhangyishan 24 5678
yangzi 25 3400
yangzi 25 3400
yangyang 25 2388
wangyuan 20 2388

4.sort的-o選項

正常將sort的執(zhí)行結(jié)果重定向到源文件會使源文件變?yōu)榭?/p>

[root@vm3 ~]# sort test.txt >test.txt 
[root@vm3 ~]# cat test.txt

但是加上-o就可以將排序后的結(jié)果重定向到源文件

[root@vm3 ~]# sort test.txt -o test.txt 
[root@vm3 ~]# cat test.txt 
wangyuan 20 2388
yangyang 25 2388
yangzi 25 3400
yangzi 25 3400
zhangyishan 24 5678

5.sort的-n選項

-n選項是按照數(shù)值排序

[root@vm3 ~]# sort number.txt 
1
12
14
2
2
3
5
7
[root@vm3 ~]# sort -n number.txt 
1
2
2
3
5
7
12
14

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

zhangyishan 24 5678像上面的一行文本以空格分割成三列,分別表示姓名 年齡 工資,如果我們想按第二列的年齡排序怎么辦呢,這時候就要用到-t和-k參數(shù)了
-t指定間隔符
-k用來指定列數(shù)

[root@vm3 ~]# sort -t ' ' -k 2 test.txt 
wangyuan 20 2388
zhangyishan 24 5678
yangyang 25 2388
yangzi 25 3400
yangzi 25 3400

7. 其他的sort常用選項

-f會將小寫字母都轉(zhuǎn)換為大寫字母來進行比較,亦即忽略大小寫
-c會檢查文件是否已排好序,如果亂序,則輸出第一個亂序的行的相關(guān)信息,最后返回1
-C會檢查文件是否已排好序,如果亂序,不輸出內(nèi)容,僅返回1
-M會以月份來排序,比如JAN小于FEB等等
-b會忽略每一行前面的所有空白部分,從第一個可見字符開始比較。

有時候?qū)W習腳本,你會發(fā)現(xiàn)sort命令后面跟了一堆類似-k1,2,或者-k1.2 -k3.4的東東,有些匪夷所思。今天,我們就來搞定它—-k選項!

8.-k 的選項

-k 選項的語法如下:
[FStart[.CStart]][Modifier][,[FEnd[.CEnd]][Modifier]]
這個語法格式包含兩大部分,以逗號(,)分割為Start和End兩部分
如果不設置End部分,那么就認為End被設定為行尾!
Start部分由三部分組成:
FStart指定以哪個部分排序,1就是以第一部分排序
CStart指定從指定部分的第幾個字符開始排序
Modifier指定排序方式可以使用r、n等選項

9.演示-k的使用

如我們想從名字的第二個字符開始排序

[root@vm3 ~]# sort -t ' ' -k 1.2 test.txt 
yangyang 25 2388
wangyuan 20 2388
yangzi 25 3400
yangzi 25 3400
zhangyishan 24 5678

只根據(jù)名字的第二個字母排序,第二個字母一樣,以年齡倒序排列

[root@vm3 ~]# sort -t ' ' -k 1.2,1.2 -k 2rn test.txt 
yangyang 25 2388
yangzi 25 3400
yangzi 25 3400
wangyuan 20 2388
zhangyishan 24 5678

10.在modifier部分的選項

可以用到b、d、f、i、n 或 r。
其中n和r你肯定已經(jīng)很熟悉了。
b表示忽略本域的簽到空白符號。
d表示對本域按照字典順序排序(即,只考慮空白和字母)。
f表示對本域忽略大小寫進行排序。
i表示忽略“不可打印字符”,只針對可打印字符進行排序。(有些ASCII就是不可打印字符,比如\a是報警,\b是退格,\n是換行,\r是回車等等)

參考自linux sort 命令詳解

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

  • 剛接觸這個命令時一點頭緒都沒有,只知道照用,這篇博文還可以,能夠理解一下基本原理。轉(zhuǎn)載地址 1 sort的工作原理...
    王詩翔閱讀 672評論 2 4
  • sort是在Linux里非常常用的一個命令,管排序的,集中精力,五分鐘搞定sort,現(xiàn)在開始! 1 sort的工作...
    你清澈又神秘閱讀 859評論 0 2
  • 1. sort的工作原理 sort將文件的每一行作為一個單位,相互比較,比較原則是從首字符向后,依次按ASCII碼...
    隨風化作雨閱讀 337評論 0 0
  • 這個不錯分享給大家,從扣上看到的,就轉(zhuǎn)過來了 《電腦專業(yè)英語》 file [fail] n. 文件;v. 保存文...
    麥子先生R閱讀 7,107評論 5 24
  • 不好前方有妖氣,八戒瞬間提高了警惕說著。唐僧驚慌失措,勒緊龍馬,龍馬呼呼作響,唉,早知道這樣就不讓悟空離開了,這可...
    yyhhzz閱讀 156評論 0 0

友情鏈接更多精彩內(nèi)容