溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Linux系統sort命令的具體使用方法是什么

發布時間:2022-01-26 17:57:30 來源:億速云 閱讀:214 作者:柒染 欄目:開發技術

本篇文章為大家展示了Linux系統sort命令的具體使用方法是什么,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

在Linux系統中 sort 命令可以對文件進行各種排序,所以sort 命令可以當作個非常強大的數據管理工具。

sort:可以實現依據不同的數據類型進行排序,其語法及常用參數格式如下:

  •  sort [-bcfMnrtk][源文件][-o 輸出文件] 
            補充說明:sort可針對文本文件的內容,以行為單位來排序。       
        參  數: 
          -b   忽略每行前面開始出的空格字符。 
          -c   檢查文件是否已經按照順序排序。 
          -f   排序時,忽略大小寫字母。 
          -M   將前面3個字母依照月份的縮寫進行排序。 
          -n   依照數值的大小排序。 
          -o   將排序后的結果存入指定的文件。 
          -r   以相反的順序來排序。 
          -t   指定排序時所用的欄位分隔字符。 
          -k  選擇以哪個區間進行排序。

    1 sort的工作原理

    sort將文件的每一行作為一個單位,相互比較,比較原則是從首字符向后,依次按ASCII碼值進行比較,最后將他們按升序輸出。

     [root@gitlab ~]$ cat seq.txt 
     banana 
     apple 
     pear 
     orange 
     pear 
     [root@gitlab ~]$ sort seq.txt 
     apple 
     banana 
     orange 
     pear 
     pear

    2 sort的-u選項

    它的作用很簡單,就是在輸出行中去除重復行。

     [root@gitlab ~]$ sort -u seq.txt 
     apple 
     banana 
     orange 
     pear

    pear由于重復被-u選項無情的刪除了。

    3 sort的-r選項

     [root@gitlab ~]$ cat number.txt 
     1 
     3 
     5 
     7 
     11 
     2 
     4 
     6 
     10 
     8 
     9 
     [root@gitlab ~]$ sort number.txt  --sort默認的排序方式是升序 
     1 
     10 
     11 
     2 
     3 
     4 
     5 
     6 
     7 
     8 
     9 
     [root@gitlab ~]$ sort -n number.txt      --排序程序將這些數字按字符來排序了,排序程序會先比較1和2,顯然1小,所以就將10放在2前面 
     1 
     2 
     3 
     4 
     5 
     6 
     7 
     8 
     9 
     10 
     11 
     [root@gitlab ~]$ sort -n -r number.txt      --r表示降序,n表示按數字進行排序 
     11 
     10 
     9 
     8 
     7 
     6 
     5 
     4 
     3 
     2 
     1

    4 sort的-o選項

    由于sort默認是把結果輸出到標準輸出,所以需要用重定向才能將結果寫入文件,形如sort filename > newfile。

    但是,如果你想把排序結果輸出到原文件中,用重定向就需要使用追加的方式。

     [root@gitlab ~]$ sort -n -r number.txt > number.txt 
     [root@gitlab ~]$ cat number.txt 
     [root@gitlab ~]$

    number清空了。所以我們需要使用-o選項,它成功的解決了這個問題,讓你放心的將結果寫入原文件。這或許也是-o比重定向的唯一優勢所在。

     [root@gitlab ~]$ sort -n -r number.txt -o number.txt 
     [root@gitlab ~]$ cat number.txt 
     11 
     10 
     9 
     8 
     7 
     6 
     5 
     4 
     3 
     2 
     1

    5 sort的-t選項和-k選項

     [root@gitlab ~]$ cat facebook.txt 
     banana:30:5.5 
     apple:10:2.5 
     pear:90:2.3 
     orange:20:3.4 
     [root@gitlab ~]$ sort -n -k 2 -t : facebook.txt 
     apple:10:2.5 
     orange:20:3.4 
     banana:30:5.5 
     pear:90:2.3

    這個文件有三列,列與列之間用冒號隔開了,第一列表示水果類型,第二列表示水果數量,第三列表示水果價格。那么我想以水果數量來排序,也就是以第二列來排序,如何利用sort實現?幸好,sort提供了-t選項,后面可以設定間隔符。(是不是想起了cut和paste的-d選項,共鳴~~)

    指定了間隔符之后,就可以用-k來指定列數了。我們使用冒號作為間隔符,并針對第二列來進行數值升序排序,結果很令人滿意。

    6 其他的sort常用選項

    -f會將小寫字母都轉換為大寫字母來進行比較,亦即忽略大小寫

    -c會檢查文件是否已排好序,如果亂序,則輸出第一個亂序的行的相關信息,最后返回1

    -C會檢查文件是否已排好序,如果亂序,不輸出內容,僅返回1

    -M會以月份來排序,比如JAN小于FEB等等

    -b會忽略每一行前面的所有空白部分,從第一個可見字符開始比較。

上述內容就是Linux系統sort命令的具體使用方法是什么,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女