<span id="vexk9"><table id="vexk9"></table></span>

      sort

      對文本文件中所有行進行排序。

      概要

      sort [OPTION]... [FILE]...
      sort [OPTION]... --files0-from=F
      

      主要用途

      選項

      排序選項:

      -b, --ignore-leading-blanks    忽略開頭的空白。
      -d, --dictionary-order         僅考慮空白、字母、數(shù)字。
      -f, --ignore-case              將小寫字母作為大寫字母考慮。
      -g, --general-numeric-sort     根據(jù)數(shù)字排序。
      -i, --ignore-nonprinting       排除不可打印字符。
      -M, --month-sort               按照非月份、一月、十二月的順序排序。
      -h, --human-numeric-sort       根據(jù)存儲容量排序(注意使用大寫字母,例如:2K 1G)。
      -n, --numeric-sort             根據(jù)數(shù)字排序。
      -R, --random-sort              隨機排序,但分組相同的行。
      --random-source=FILE           從FILE中獲取隨機長度的字節(jié)。
      -r, --reverse                  將結(jié)果倒序排列。
      --sort=WORD                    根據(jù)WORD排序,其中: general-numeric 等價于 -g,human-numeric 等價于 -h,month 等價于 -M,numeric 等價于 -n,random 等價于 -R,version 等價于 -V。
      -V, --version-sort             文本中(版本)數(shù)字的自然排序。
      

      其他選項:

      --batch-size=NMERGE                    一次合并最多NMERGE個輸入;超過部分使用臨時文件。
      -c, --check, --check=diagnose-first    檢查輸入是否已排序,該操作不會執(zhí)行排序。
      -C, --check=quiet, --check=silent      類似于 -c 選項,但不輸出第一個未排序的行。
      --compress-program=PROG                使用PROG壓縮臨時文件;使用PROG -d解壓縮。
      --debug                                注釋用于排序的行,發(fā)送可疑用法的警報到stderr。
      --files0-from=F                        從文件F中讀取以NUL結(jié)尾的所有文件名稱;如果F是 - ,那么從標準輸入中讀取名字。
      -k, --key=KEYDEF                       通過一個key排序;KEYDEF給出位置和類型。
      -m, --merge                            合并已排序文件,之后不再排序。
      -o, --output=FILE                      將結(jié)果寫入FILE而不是標準輸出。
      -s, --stable                           通過禁用最后的比較來穩(wěn)定排序。
      -S, --buffer-size=SIZE                 使用SIZE作為內(nèi)存緩存大小。
      -t, --field-separator=SEP              使用SEP作為列的分隔符。
      -T, --temporary-directory=DIR          使用DIR作為臨時目錄,而不是 $TMPDIR 或 /tmp;多次使用該選項指定多個臨時目錄。
      --parallel=N                           將并發(fā)運行的排序數(shù)更改為N。
      -u, --unique                           同時使用-c,嚴格檢查排序;不同時使用-c,輸出排序后去重的結(jié)果。
      -z, --zero-terminated                  設(shè)置行終止符為NUL(空),而不是換行符。
      --help                                 顯示幫助信息并退出。
      --version                              顯示版本信息并退出。
      
      
      KEYDEF的格式為:F[.C][OPTS][,F[.C][OPTS]] ,表示開始到結(jié)束的位置。
      F表示列的編號
      C表示
      OPTS為[bdfgiMhnRrV]中的一到多個字符,用于覆蓋當(dāng)前排序選項。
      使用--debug選項可診斷出錯誤的用法。
      
      
      SIZE 可以有以下的乘法后綴:
      % 內(nèi)存的1%;
      b 1;
      K 1024(默認);
      剩余的 M, G, T, P, E, Z, Y 可以類推出來。
      

      參數(shù)

      FILE(可選):要處理的文件,可以為任意數(shù)量。

      返回值

      返回0表示成功,返回非0值表示失敗。

      例子

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

      root@[mail text]# cat sort.txt
      aaa:10:1.1
      ccc:30:3.3
      ddd:40:4.4
      bbb:20:2.2
      eee:50:5.5
      eee:50:5.5
      
      [root@mail text]# sort sort.txt
      aaa:10:1.1
      bbb:20:2.2
      ccc:30:3.3
      ddd:40:4.4
      eee:50:5.5
      eee:50:5.5
      

      忽略相同行使用-u選項或者uniq

      [root@mail text]# cat sort.txt
      aaa:10:1.1
      ccc:30:3.3
      ddd:40:4.4
      bbb:20:2.2
      eee:50:5.5
      eee:50:5.5
      
      [root@mail text]# sort -u sort.txt
      aaa:10:1.1
      bbb:20:2.2
      ccc:30:3.3
      ddd:40:4.4
      eee:50:5.5
      
      [root@mail text]# uniq sort.txt
      aaa:10:1.1
      ccc:30:3.3
      ddd:40:4.4
      bbb:20:2.2
      eee:50:5.5
      

      sort-n、-r、-k、-t選項的使用:

      [root@mail text]# cat sort.txt
      AAA:BB:CC
      aaa:30:1.6
      ccc:50:3.3
      ddd:20:4.2
      bbb:10:2.5
      eee:40:5.4
      eee:60:5.1
      
      # 將BB列按照數(shù)字從小到大順序排列:
      [root@mail text]# sort -nk 2 -t: sort.txt
      AAA:BB:CC
      bbb:10:2.5
      ddd:20:4.2
      aaa:30:1.6
      eee:40:5.4
      ccc:50:3.3
      eee:60:5.1
      
      # 將CC列數(shù)字從大到小順序排列:
      # -n是按照數(shù)字大小排序,-r是以相反順序,-k是指定需要排序的欄位,-t指定欄位分隔符為冒號
      [root@mail text]# sort -nrk 3 -t: sort.txt
      eee:40:5.4
      eee:60:5.1
      ddd:20:4.2
      ccc:50:3.3
      bbb:10:2.5
      aaa:30:1.6
      AAA:BB:CC
      

      關(guān)于-k選項的解讀和例子:

      -k選項深度解讀:

      FStart.CStart Modifier,FEnd.CEnd Modifier
      -------Start--------,-------End--------
       FStart.CStart 選項  ,  FEnd.CEnd 選項
      

      這個語法格式可以被其中的逗號,分為兩大部分,Start 部分和 End 部分。 Start部分由三部分組成,其中的Modifier部分就是我們之前說過的選項部分; 我們重點說說Start部分的FStartC.StartC.Start是可以省略的,省略的話就表示從本域的開頭部分開始。FStart.CStart,其中FStart就是表示使用的域,而CStart則表示在FStart域中從第幾個字符開始算排序首字符。 同理,在End部分中,你可以設(shè)定FEnd.CEnd,如果你省略.CEnd或?qū)⑺O(shè)定為0,則表示結(jié)尾到本域的最后一個字符。

      例子:從公司英文名稱的第二個字母開始排序:

      $ sort -t ' ' -k 1.2 facebook.txt
      baidu 100 5000
      sohu 100 4500
      google 110 5000
      guge 50 3000
      

      解讀:使用了-k 1.2,表示對第一個域的第二個字符開始到本域的最后一個字符為止的字符串進行排序。你會發(fā)現(xiàn)baidu因為第二個字母是a而名列榜首。sohu和google第二個字符都是o,但sohu的h在google的o前面,所以兩者分別排在第二和第三。guge只能屈居第四了。

      例子:只針對公司英文名稱的第二個字母進行排序,如果相同的按照員工工資進行降序排序:

      $ sort -t ' ' -k 1.2,1.2 -nrk 3,3 facebook.txt
      baidu 100 5000
      google 110 5000
      sohu 100 4500
      guge 50 3000
      

      解讀:由于只對第二個字母進行排序,所以我們使用了-k 1.2,1.2的表示方式,表示我們只對第二個字母進行排序(如果你問我使用-k 1.2怎么不行?當(dāng)然不行,因為你省略了End部分,這就意味著你將對從第二個字母起到本域最后一個字符為止的字符串進行排序)。 對員工工資進行排序,我們也使用了-k 3,3,這是最準確的表述,表示我們只對本域進行排序,因為如果你省略了后面的3,就變成了我們對第3個域開始到最后一個域位置的內(nèi)容進行排序了。

      注意

      1. 關(guān)于-g和-n選項的區(qū)別:stackoverflow

      2. 關(guān)于這個復(fù)雜命令的學(xué)習(xí),建議您閱讀info文檔及參考博客、問答網(wǎng)站等。

      3. 該命令是GNU coreutils包中的命令,相關(guān)的幫助信息請查看man -s 1 shufinfo coreutils 'shuf invocation'

      主站蜘蛛池模板: 亚洲综合色视频在线观看| 色综合久久无码中文字幕| 在线亚洲97se亚洲综合在线| 国产成人亚综合91精品首页| 亚洲AV成人潮喷综合网| 人人狠狠综合久久亚洲婷婷| 制服丝袜人妻综合第一页| 亚洲国产一成久久精品国产成人综合 | 亚洲精品第一国产综合野| 色婷婷综合久久久久中文一区二区 | 精品无码综合一区| 亚洲国产精品综合福利专区| 精品久久综合一区二区| 久久久久久久综合日本| 好了av第四综合无码久久| 色欲天天天综合网| 色噜噜狠狠狠综合曰曰曰| 狠狠色综合7777久夜色撩人| 色婷婷综合久久久久中文一区二区 | 久久综合色天天久久综合图片| 综合在线免费视频| 91精品一区二区综合在线| 亚洲婷婷五月综合狠狠爱| 亚洲伊人久久综合影院| 国产成人综合日韩精品无码| 狠狠色丁香久久婷婷综合图片| 香蕉国产综合久久猫咪| 亚洲国产婷婷综合在线精品| 狠狠色婷婷狠狠狠亚洲综合 | 精品亚洲综合久久中文字幕| 亚洲国产成人久久综合野外| 久久久久久久综合狠狠综合| 久久精品水蜜桃av综合天堂| 亚洲综合久久成人69| 亚洲欧洲日韩综合| 色综合久久精品中文字幕首页 | 国产成人亚洲综合色影视| 国产成人综合亚洲AV第一页| 一本色道久久88亚洲综合| 国产色婷婷五月精品综合在线| 国产精品综合专区中文字幕免费播放 |