Linux sort和uniq命令的应用

sort:

选项:
    -b                      忽略每行前面开始出的空格字符
    -c                      检查文件是否已经按照顺序排序
    -d                      排序时,处理英文字母、数字及空格字符外,忽略其他的字符
    -f                      排序时,将小写字母视为大写字母
    -i                      排序时,除了040至176之间的ASCII字符外,忽略其他的字符
    -m                      将几个排序好的文件进行合并
    -M                      将前面3个字母依照月份的缩写进行排序
    -n                      依照数值的大小排序
    -o                      将排序后的结果存入指定的文件
    -r                      倒序
    -t                      指定排序时所用的分隔符, 默认为[tab](通常和 -k 参数一起使用)
    -k                      指定以第几个字段进行排序
    -u                      uniq, 相同的数据, 仅出现一行
    +<起始栏位>-<结束栏位>   以指定的字段来排序,范围由起字段到结束字段的前一个字段
    --help                  显示帮助信息


示例:
    sort /etc/passwd 
    sort -t ':' -k 3 /etc/passwd -n
    sort -t ':' -k 3 /etc/passwd -n -r

  

uniq:

选项: 不指定选项, 默认重复的行只出现一次
    -c                      在每列旁边显示该行重复出现的次数
    -d                      仅显示重复出现的行
    -u                      仅显示出现过一次的行(唯一的行)
    -w                      指定要比较的字段

示例:
    last | sort -k '3' | uniq -w 3 -c

  

sort 和 uniq 使用示例:

示例文件:
    cat test1.txt
        1
        2
        3
        4
        5

    cat test2.txt
        1
        3
        5
        6
        7
        9     

示例1: 求两个文件的交集
    # 实现思路: 交集, 即两个文件都存在的列, 使用 sort 排序之后再使用 uniq -d 命令即可实现
    sort test1.txt test2.txt | uniq -d
        1
        3
        5

示例2: 求两个文件的并集
    # 实现思路: 并集, 即两个文件合并在一起, 去除重复的行, 使用 sort 排序之后再使用 uniq 或者 sort -u
    sort test1.txt test2.txt | sort -u 或者 sort test1.txt test2.txt | uniq
        1
        2
        3
        4
        5
        6
        7
        9

示例3: 求两个文件的差集
    # 实现思路: 差集(test1-test2), 把 test2 的行重复2次和 test1 的元素放到一起排序, 只输出出现一次的项 
    # test1 相对 test2 的差集
    sort test1.txt test2.txt test2.txt | uniq -u
        2
        4

    # test2 相对 test1 的差集
    sort test1.txt test1.txt test2.txt | uniq -u           
        6
        7
        9

示例4: 求两个文件的对称差
    # 实现思路: 对称差, 即两个文件加起来只出现过一次的行, 使用 sort 排序之后再使用 uniq -u
    sort test1.txt test2.txt | uniq -u
        2
        4
        6
        7
        9

  

原文地址:https://www.cnblogs.com/huyuanblog/p/10129883.html