sort

    sort命令 是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。

    1. -c:检查文件是否已经按照顺序排序;
    2. -d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;
    3. -f:排序时,将小写字母视为大写字母;
    4. -i:排序时,除了040176之间的ASCII字符外,忽略其他的字符;
    5. -m:将几个排序号的文件进行合并;
    6. -M:将前面3个字母依照月份的缩写进行排序;
    7. -n:依照数值的大小排序;
    8. -o<输出文件>:将排序后的结果存入制定的文件;
    9. -r:以相反的顺序来排序;
    10. +<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

    文件:指定待排序的文件列表。

    sort将文件/文本的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

    1. [root@mail text]# cat sort.txt
    2. aaa:10:1.1
    3. ccc:30:3.3
    4. ddd:40:4.4
    5. bbb:20:2.2
    6. eee:50:5.5
    7. eee:50:5.5
    8. [root@mail text]# sort -u sort.txt
    9. aaa:10:1.1
    10. bbb:20:2.2
    11. ccc:30:3.3
    12. ddd:40:4.4
    13. eee:50:5.5
    14. 或者
    15. [root@mail text]# uniq sort.txt
    16. aaa:10:1.1
    17. ccc:30:3.3
    18. ddd:40:4.4
    19. bbb:20:2.2
    20. eee:50:5.5

    sort的-n、-r、-k、-t选项的使用:

    -k选项的具体语法格式:

    -k选项的语法格式:

    1. FStart.CStart Modifie,FEnd.CEnd Modifier
    2. -------Start--------,-------End--------
    3. FStart.CStart 选项 , FEnd.CEnd 选项

    从公司英文名称的第二个字母开始进行排序:

    使用了-k 1.2,表示对第一个域的第二个字符开始到本域的最后一个字符为止的字符串进行排序。你会发现baidu因为第二个字母是a而名列榜首。sohu和 google第二个字符都是o,但sohu的h在google的o前面,所以两者分别排在第二和第三。guge只能屈居第四了。

    只针对公司英文名称的第二个字母进行排序,如果相同的按照员工工资进行降序排序:

    1. $ sort -t ' ' -k 1.2,1.2 -nrk 3,3 facebook.txt
    2. baidu 100 5000
    3. google 110 5000
    4. sohu 100 4500