• sort命令详解


    1、工作原理:

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

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

    2、sort -u

    -u : unique 唯一,排序并且排除重复项

    [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

    -r : reverse 反向排序

    [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
    

    4、sort -o

    -o : output 将排序结果输出到源文件
    sort默认将结果输出到标准输出,所以需要重定向才可以将结果写入文件,形如 sort filename > newfile
    但是如果你想把排序结果输出到原文件中,用重定向不可行

    [rocrocket@rocrocket programming]$ sort -r number.txt > number.txt
    [rocrocket@rocrocket programming]$ cat number.txt
    [rocrocket@rocrocket programming]$
    

    使用 -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
    

    5、sort -n

    -n : number 安装数字进行排序,默认数字会被当作字符串进行比较,会出现一下情况

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

    使用 -n 参数以后

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

    6、sort -t -k 参数

    -t : tables 指定分隔符,默认tab为分隔符
    -k: 指定安装哪一个分割区域进行排序

    [rocrocket@rocrocket programming]$ cat facebook.txt
    banana:30:5.5
    apple:10:2.5
    pear:90:2.3
    orange:20:3.4
    [rocrocket@rocrocket programming]$ sort -n -k 2 -t : facebook.txt
    # -n 按照数字进行排序
    # -t 此例中指定 : 为分隔符
    # -k 此例中按照分割的第二区域进行排序
    apple:10:2.5
    orange:20:3.4
    banana:30:5.5
    pear:90:2.3
    

    7、其他的sort常用选项

    • -f会将小写字母都转换为大写字母来进行比较,亦即忽略大小写
    • -c会检查文件是否已排好序,如果乱序,则输出第一个乱序的行的相关信息,最后返回1
    • -C会检查文件是否已排好序,如果乱序,不输出内容,仅返回1
    • -M会以月份来排序,比如JAN小于FEB等等
    • -b会忽略每一行前面的所有空白部分,从第一个可见字符开始比较。
  • 相关阅读:
    7、单向一对多的关联关系(1的一方有n的一方的集合属性,n的一方却没有1的一方的引用)
    6、JPA_映射单向多对一的关联关系(n的一方有1的引用,1的一方没有n的集合属性)
    解决ubuntu的screen已经处于Attached状态,无法再打开窗口
    关于.ssh出错,无法从远程git仓库拉代码
    给程序添加git commit信息
    ubuntu服务器常用命令
    uint128_t 添加 c++ 重载类型强制转换
    Visual Studio 查看宏展开
    EOS dice移到1.8版本的修改汇总
    ubuntu 添加字体
  • 原文地址:https://www.cnblogs.com/zhangsubai/p/6861697.html
Copyright © 2020-2023  润新知