<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    The NoteBook of EricKong

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      611 Posts :: 1 Stories :: 190 Comments :: 0 Trackbacks

    sort命令是幫我們依據不同的數據類型進行排序,其語法及常用參數格式:
      sort [-bcfMnrtk][源文件][-o 輸出文件] 
    補充說明:sort可針對文本文件的內容,以行為單位來排序。

    參  數:
      -b   忽略每行前面開始出的空格字符。
      -c   檢查文件是否已經按照順序排序。
      -f   排序時,忽略大小寫字母。
      -M   將前面3個字母依照月份的縮寫進行排序。
      -n   依照數值的大小排序。
      -o<輸出文件>   將排序后的結果存入指定的文件。
      -r   以相反的順序來排序。
      -t<分隔字符>   指定排序時所用的欄位分隔字符。
      -k  選擇以哪個區間進行排序。
      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    下面通過幾個例子來講述Sort的使用。

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

    [rocrocket@rocrocket programming]$ cat seq.txt
    banana
    apple
    pear
    orange
    [rocrocket@rocrocket programming]$ sort seq.txt
    apple
    banana
    orange
    pear

    用戶可以保存排序后的文件內容,或把排序后的文件內容輸出至打印機。下例中用戶把排序后的文件內容保存到名為result的文件中。
    $ Sort seq.txt > result

    (2)sort的-u選項

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

    [rocrocket@rocrocket programming]$ cat seq.txt
    banana
    apple
    pear
    orange
    pear
    [rocrocket@rocrocket programming]$ sort seq.txt
    apple
    banana
    orange
    pear
    pear
    [rocrocket@rocrocket programming]$ sort -u seq.txt
    apple
    banana
    orange
    pear

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

    (3)sort的-r選項

    sort默認的排序方式是升序,如果想改成降序,就加個-r就搞定了。

    [rocrocket@rocrocket programming]$ cat number.txt
    1
    3
    5
    2
    4
    [rocrocket@rocrocket programming]$ sort number.txt
    1
    2
    3
    4
    5
    [rocrocket@rocrocket programming]$ sort -r number.txt
    5
    4
    3
    2
    1
    (5)sort的-o選項

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

    但是,如果你想把排序結果輸出到原文件中,用重定向可就不行了。

    [rocrocket@rocrocket programming]$ sort -r number.txt > number.txt
    [rocrocket@rocrocket programming]$ cat number.txt
    [rocrocket@rocrocket programming]$
    看,竟然將number清空了。

    就在這個時候,-o選項出現了,它成功的解決了這個問題,讓你放心的將結果寫入原文件。這或許也是-o比重定向的唯一優勢所在。

    [rocrocket@rocrocket programming]$ cat number.txt
    1
    3
    5
    2
    4
    [rocrocket@rocrocket programming]$ sort -r number.txt -o number.txt
    [rocrocket@rocrocket programming]$ cat number.txt
    5
    4
    3
    2
    1

    (6) sort的-n選項

    你有沒有遇到過10比2小的情況。我反正遇到過。出現這種情況是由于排序程序將這些數字按字符來排序了,排序程序會先比較1和2,顯然1小,所以就將10放在2前面嘍。這也是sort的一貫作風。

    我們如果想改變這種現狀,就要使用-n選項,來告訴sort,“要以數值來排序”!

    [rocrocket@rocrocket programming]$ cat number.txt
    1
    10
    19
    11
    2
    5
    [rocrocket@rocrocket programming]$ sort number.txt
    1
    10
    11
    19
    2
    5
    [rocrocket@rocrocket programming]$ sort -n number.txt
    1
    2
    5
    10
    11
    19

    (7) sort的-t選項和-k選項

    如果有一個文件的內容是這樣:

    [rocrocket@rocrocket programming]$ cat facebook.txt
    banana:30:5.5
    apple:10:2.5
    pear:90:2.3
    orange:20:3.4

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

    [rocrocket@rocrocket programming]$ sort -n -k 2 -t ‘:’ facebook.txt
    apple:10:2.5
    orange:20:3.4
    banana:30:5.5
    pear:90:2.3

    (8) 其他的sort常用選項

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

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

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

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

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

    posted on 2013-11-29 16:38 Eric_jiang 閱讀(176) 評論(0)  編輯  收藏 所屬分類: Linux
    主站蜘蛛池模板: 亚洲精品国产肉丝袜久久| 亚洲av成人无码网站…| 中文无码亚洲精品字幕| 国产在线国偷精品免费看 | 一个人在线观看视频免费| 精品国产人成亚洲区| 亚洲欧美日韩国产成人| 无码国产精品一区二区免费 | 午夜影视日本亚洲欧洲精品一区| 亚洲精品成a人在线观看夫| 野花高清在线电影观看免费视频 | 最新亚洲人成无码网站| 啦啦啦www免费视频| 亚洲人成免费网站| 免费精品国产自产拍在| 精品国产免费人成网站| 亚洲一级片免费看| 一级特黄特色的免费大片视频 | 亚洲国产日韩在线一区| 亚洲精品一级无码中文字幕| 看免费毛片天天看| 国产人成免费视频| 国产午夜亚洲精品不卡 | 好吊色永久免费视频大全| 亚洲第一网站免费视频| 亚洲中文字幕视频国产| 成年女人喷潮毛片免费播放| 自拍偷自拍亚洲精品偷一| 综合自拍亚洲综合图不卡区| 国产福利视精品永久免费| 亚洲人成电影在线观看网 | 免费无码午夜福利片| 亚洲综合av永久无码精品一区二区 | 99热在线精品免费全部my| 精品国产污污免费网站| 久久久亚洲欧洲日产国码aⅴ| 国产成人精品免费视| 亚洲熟妇AV日韩熟妇在线| 国产jizzjizz免费视频| 妻子5免费完整高清电视| 一级毛片aaaaaa免费看|