• 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
    

      

  • 相关阅读:
    Error Creating Deployment 有关Tomcat配置问题
    XML约束
    动态代理的一些问题。
    内部类的原理理解
    子父类覆盖方法和实现接口时牵扯到的细节问题。
    JavaSE 复习_4 接口多态和内部类
    JavaSE复习_3 继承
    JavaSE复习_2 对象与类
    JavaSE复习_1 Java的基本格式和运算符
    Linux 添加用户(user),组(Group)以及权限(Permission)
  • 原文地址:https://www.cnblogs.com/huyuanblog/p/10129883.html
Copyright © 2020-2023  润新知