sort命令bash
主要用於對文本內容進行排序ide
sort [-bcfMnrtku][源文件][-o 輸出文件] spa
-b 忽略每行前面開始出的空格字符。排序
-c 檢查文件是否已經按照順序排序。it
-f 排序時,忽略大小寫字母。class
-M 將前面3個字母依照月份的縮寫進行排序。test
-n 依照數值的大小排序。語法
-o<輸出文件> 將排序後的結果存入指定的文件。sort
-r 以相反的順序來排序。重定向
-t<分隔字符> 指定排序時所用的欄位分隔字符。
-k 選擇以哪一個區間進行排序
-u 刪除重複行
sort處理文件的時候是以行爲單位,相互比較,原則是從首字符依次向後,依次按ASCII碼值進行比較,最後將他們按升序輸出
[jeck@localhost~]$ cat test dddddddddddddd ccccccccccc eeeeeeeeee aaaaaaaa bbbbbbb abcd bcd 3 2 5 1 4 [jeck@localhost~]$ sort test 1 2 3 4 5 aaaaaaaa abcd bbbbbbb bcd ccccccccccc dddddddddddddd eeeeeeeeee
刪除重複行 -u
[jeck@localhost~]$ cat test bbbbb aaaaa cccccc bbbbb bbbbbaa aaaaa [jeck@localhost~]$ sort -u test aaaaa bbbbb bbbbbaa cccccc
降序排列 -r
[jeck@localhost~]$ sort -ur test cccccc bbbbbaa bbbbb aaaaa
把輸出結果存到另外一個文件中
通常狀況下用'>'便可重定向到另外一個文件,可是須要直接修改本文件時,用'>'就會把原文件清空,因此須要用到-o參數 [jeck@localhost~]$ cat test bbbbb aaaaa cccccc bbbbb bbbbbaa aaaaa [jeck@localhost~]$ sort -ur test > 1.txt [jeck@localhost~]$ cat 1.txt cccccc bbbbbaa bbbbb aaaaa [jeck@localhost~]$ cp test test1 [jeck@localhost~]$ sort -ur test > test ---->定向到原文件 [jeck@localhost~]$ cat test 空 [jeck@localhost~]$ sort -ur test1 -o test1 [jeck@localhost~]$ cat test1 cccccc bbbbbaa bbbbb aaaaa
使用數值來排序 -n
默認sort會以行首第一個字符做比較排序,可是,當出現多位數字做比較時候,就得加-n,不然比較不成功 [jeck@localhost~]$ sort test 1 10 12 14 2 3 4 5 會發現排序不對,如今加上-n [jeck@localhost~]$ sort -n test 1 2 3 4 5 10 12 14
指定間隔符(-t)和列數(-k)進行排序
[jeck@localhost~]$ cat test 一月192.168.254.1 109 二月192.168.254.2 201 三月192.168.254.4 344 如今要按訪問次數從大到小排序,以空格爲分隔符,指定比較第三列 [jeck@localhost~]$ sort -n -r -k 3 -t ' ' test 三月192.168.254.4 344 二月192.168.254.2 201 一月192.168.254.1 109