zoukankan      html  css  js  c++  java
  • sort命令总结

    功能:排序

    语法:sort [-bcdfimMnr][-o<输出文件>][-t<分隔字符>][+<起始栏位>-<结束栏位>][--help][--verison][文件]

    参数:
      -b   忽略每行前面开始出的空格字符。
      -d   排序时,处理英文字母、数字及空格字符外,忽略其他的字符。
      -f   排序时,将小写字母视为大写字母。
      -i   排序时,除了040至176之间的ASCII字符外,忽略其他的字符。
      -c   检查文件是否已经按照顺序排序。
      -m   将几个排序好的文件进行合并。
      -M  前面3个字母依照月份的缩写进行排序。
      -n   依照数值的大小排序。
      -o<输出文件>   将排序后的结果存入指定的文件。
      -r   以相反的顺序来排序。
      -t<分隔字符>   指定排序时所用的栏位分隔字符。
      -k 指定域
      --help   显示帮助。
      --version   显示版本信息。


    [root@Jesse ~]# cat c.txt

    7 July
    8 August
    9 September
    10 October
    11 November
    12 December
    1 January
    2 February
    3 March
    4 April
    5 May
    6 June
    [root@Jesse ~]# sort -c c.txt
    sort: c.txt:4: disorder: 10 October  //说明未按照某种顺序进行排列,如果什么也不显示,则说明已按某种顺序分类。
    --------------------------------------------------------------------------------------------------[root@Jesse ~]# cat a.txt
    google 110 5000
    baidue 100 5010
    gugeee 120 3000
    sohuee 100 4500
    [root@Jesse ~]# cat b.txt
    3 ladygaga 1
    5 ladygaga 9
    0 ladygaga 5
    9 ladygaga 4
    6 ladygaga 2
    8 ladygaga 3
    7 ladygaga 0
    1 ladygaga 6
    4 ladygaga 7
    2 ladygaga 8
    [root@Jesse ~]# sort -m a.txt c.txt //将两个文件内容整合到一起
    7 July
    8 August
    9 September
    10 October
    11 November
    12 December
    1 January
    2 February
    3 March
    4 April
    5 May
    6 June
    google 110 5000
    baidue 100 5010
    gugeee 120 3000
    sohuee 100 4500


     

    进行月份排序
    [root@Jesse ~]# cat c.txt
     July
     August
     September
     October
     November
     December
     January
     February
     March
     April
     May
     June
    [root@Jesse ~]# sort -M c.txt
     January
     February
     March
     April
     May
     June
     July
     August
     September
     October
     November
     December


    [root@Jesse ~]# sort -M c.txt -o d.txt  //将内容排序后导入到d.txt这个文件。


    [root@Jesse ~]# cat e.txt

    1
    2
    3
    4
    5
    6
    7
    8
    [root@Jesse ~]# sort -r e.txt   //逆序进行排列
    8
    7
    6
    5
    4
    3
    2
    1


    [root@Jesse ~]# cat a.txt

    google 110 5000
    baidue 100 5010
    gugeee 120 3000
    sohuee 100 4500
    [root@Jesse ~]# sort -t" " -k 3 a.txt  //出现空格的地方作为第一域进行分类
    gugeee 120 3000
    sohuee 100 4500
    google 110 5000
    baidue 100 5010
    ########################################################################有关-k 的实例演示
    ########################################################################准备工作:
    [root@Jesse ~]# cat a.txt
    google 110 5000
    baidue 100 5000
    gugeee 120 3000
    sohuee 101 4500


    按照字母进行排序,注意 -t 后面的引号里需要有一个空格,这里的单引号,双引号都无所谓

    [root@Jesse ~]# sort -t" " -k 1 a.txt
    baidue 100 5000
    google 110 5000
    gugeee 120 3000
    sohuee 101 4500
    [root@Jesse ~]# sort -t' ' -k 1 a.txt
    baidue 100 5000
    google 110 5000
    gugeee 120 3000
    sohuee 101 4500

    按照以空格为分割域的第二域进行排序
    [root@Jesse ~]# sort -t' ' -k 2 a.txt
    baidue 100 5000
    sohuee 101 4500
    google 110 5000
    gugeee 120 3000

    我们来测试下第二域相同的情况
    [root@Jesse ~]# cat a.txt
    google 110 5000
    baidue 100 5010
    gugeee 120 3000
    sohuee 100 4500

    通过以下实例我们发现,以空格为分割域,第二域相同的时候,第三域是没有任何次序的,如果遇到第二域相同,第三域也要进行排序的时候,我们怎么办呢
    [root@Jesse ~]# sort -n -t' ' -k 2 a.txt
    baidue 100 5010
    sohuee 100 4500
    google 110 5000
    gugeee 120 3000

    看如下演示,如果第二域相同,那么我们将从第三域进行升降处理
    [root@Jesse ~]# sort -n -t' ' -k 2 -k 3 a.txt
    sohuee 100 4500
    baidue 100 5010
    google 110 5000
    gugeee 120 3000

    如果我想让以空格为分割域的第三域进行倒叙排列
    [root@Jesse ~]# sort -n -t' ' -k 3r a.txt
    baidue 100 5010
    google 110 5000
    sohuee 100 4500
    gugeee 120 3000

    如果我想让以空格为分割域的第三域以正序进行排列
    [root@Jesse ~]# sort -t' ' -k 3n a.txt
    gugeee 120 3000
    sohuee 100 4500
    google 110 5000
    baidue 100 5010

    如果第二域有两个数相同,那么我们将以升降来排序
    [root@Jesse ~]# sort -t' ' -k 2n -k 3n a.txt
    sohuee 100 4500
    baidue 100 5010
    google 110 5000
    gugeee 120 3000

    如过只是想从第三个字母起进行排序
    [root@Jesse ~]# sort -t' ' -k 1.3 a.txt
    gugeee 120 3000
    sohuee 100 4500
    baidue 100 5010
    google 110 5000

    如果只想以第一域的第三个字符进行排序:-k 1.3,1.3 表示只以第三个字母进行排序
    [root@Jesse ~]# sort -t' ' -k 1.3,1.3 a.txt
    gugeee 120 3000
    sohuee 100 4500
    baidue 100 5010
    google 110 5000

    n表示进行排序,r表示逆序
    [root@Jesse ~]# sort -t" " -k 2nr a.txt
    gugeee 120 3000
    google 110 5000
    baidue 100 5010
    sohuee 100 4500

    以第二域进行排序,如果遇到重复的,就删除
    [root@Jesse ~]# sort -t" " -k 2n -u  a.txt
    baidue 100 5010
    google 110 5000
    gugeee 120 3000
    本文出自 “jesse's blog” 博客

  • 相关阅读:
    【知识总结】数学必修二立体几何总结
    【知识总结】数学必修四、必修五三角函数公式总结
    Apache【第一篇】安装
    Nginx【第一篇】安装
    lsb_release 提示命令不存在
    yum 命令提示语法错误
    MySQL【第三篇】数据类型
    MySQL【第二篇】基本命令
    SecureCRT 中 python 命令行使用退格键(backspace)出现 ^H 解决办法
    MySQL【第一篇】安装
  • 原文地址:https://www.cnblogs.com/code-style/p/3200608.html
Copyright © 2011-2022 走看看