zoukankan      html  css  js  c++  java
  • 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
    

      

  • 相关阅读:
    HDU1398Square Coins(母函数)
    HDU2079选课时间(母函数)
    HDU1028Ignatius and the Princess III(母函数)
    POJ1061青蛙的约会(扩展欧几里得)
    POJ1189钉子和小球(DP)
    POJ1179Polygon(DP)
    POJ2001Shortest Prefixes(字典树)
    POJ1157 LITTLE SHOP OF FLOWERS
    POJ3630Phone List(字典树)
    亲和串(HDU2203)
  • 原文地址:https://www.cnblogs.com/huyuanblog/p/10129883.html
Copyright © 2011-2022 走看看