zoukankan      html  css  js  c++  java
  • linux uniq命令用法

    uniq命令:
      对指定的ASCII文件或标准输入进行唯一性检查,以判断文本文件中重复出现的行,常用于分析日志;查看tcp各个状态连接数,ip或域名连接数排名等等场景,一般与 sort 命令结合使用。
     
    命令格式:
    uniq [选项]... [文件1] [文件2]
    uniq从已经排好序的文本文件file1中删除重复的行,输出到标准输出或file2,常作为过滤器,配合管道试压。在使用uniq命令前,必须确保操作的文本文件已经sort排序了,若不带参数运行uniq,将删除重复的行。
     
    常见参数:
    [root@bqh-118 ~]# uniq --help

    用法:uniq [选项]... [文件]
    从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出。

    不附加任何选项时匹配行将在首次出现处被合并。

    长选项必须使用的参数对于短选项时也是必需使用的。
    -c, --count 在每行前加上表示相应行目出现次数的前缀编号
    -d, --repeated 只输出重复的行,2次或2次以上的。
    -D, --all-repeated[=delimit-method 显示所有重复的行
    delimit-method={none(default),prepend,separate}
    以空行为界限
    -f, --skip-fields=N 比较时跳过前N 列
    -i, --ignore-case 在比较的时候不区分大小写
    -s, --skip-chars=N 比较时跳过前N 个字符
    -u, --unique 只显示唯一的行
    -z, --zero-terminated 使用''作为行结束符,而不是新换行
    -w, --check-chars=N 对每行第N 个字符以后的内容不作对照
    --help 显示此帮助信息并退出
    --version 显示版本信息并退出

    若域中为先空字符(通常包括空格以及制表符),然后非空字符,域中字符前的空字符将被跳过。

    提示:uniq 不会检查重复的行,除非它们是相邻的行。
    如果您想先对输入排序,使用没有uniq 的"sort -u"。

    测试:

    不加参数只对相邻的相同行内容去重

    [root@bqh-118 ~]# cat qc.log
    192.168.43.117
    192.168.43.119
    192.168.43.118
    192.168.43.118
    192.168.43.117
    192.168.43.117
    192.168.43.119
    192.168.43.110
    [root@bqh-118 ~]# uniq qc.log
    192.168.43.117
    192.168.43.119
    192.168.43.118
    192.168.43.117
    192.168.43.119
    192.168.43.110

    通过sort让重复的行相邻:

    [root@bqh-118 ~]# sort qc.log 
    192.168.43.110
    192.168.43.117
    192.168.43.117
    192.168.43.117
    192.168.43.118
    192.168.43.118
    192.168.43.119
    192.168.43.119

    uniq配合sort来去重:

    [root@bqh-118 ~]# sort qc.log |uniq
    192.168.43.110
    192.168.43.117
    192.168.43.118
    192.168.43.119
    [root@bqh-118 ~]# sort -u qc.log 
    192.168.43.110
    192.168.43.117
    192.168.43.118
    192.168.43.119

    当然我们也可以通sort -u file实现去重

    去重计数:

    [root@bqh-118 ~]# sort qc.log |uniq -c
          1 192.168.43.110
          3 192.168.43.117
          2 192.168.43.118
          2 192.168.43.119
    [root@bqh-118 ~]# sort qc.log 
    192.168.43.110
    192.168.43.117
    192.168.43.117
    192.168.43.117
    192.168.43.118
    192.168.43.118
    192.168.43.119
    192.168.43.119

    查看重复的项:

    [root@bqh-118 ~]# sort qc.log |uniq -d
    192.168.43.117
    192.168.43.118
    192.168.43.119

    查看所有重复的项:

    [root@bqh-118 ~]# sort qc.log |uniq -D
    192.168.43.117
    192.168.43.117
    192.168.43.117
    192.168.43.118
    192.168.43.118
    192.168.43.119
    192.168.43.119

    不区分大小写,去除重复的项:

    [root@bqh-118 ~]# cat qc1.log 
    apple
    APple BANAN banan grape orange Orange
    bqh jyw
    bqh1 jyw [root@bqh-118 ~]# uniq -i qc1.log apple BANAN grape orange
    bqh jyw
    bqh1 jyw

    跳过第一列:

    [root@bqh-118 ~]# uniq -f1 qc1.log 
    apple
    bqh  jyw
    bqh1 jyw

    跳过每行的第一个字符:

    [root@bqh-118 ~]# uniq -s1 qc1.log 
    apple
    APple
    BANAN
    banan
    grape
    orange
    bqh  jyw
    bqh1 jyw

    案例:处理一下qc2.log文件内容,将域名取出来并根据域名进行计数排序处理。

    [root@bqh-118 ~]# cat  qc2.log
    http://www.baidu.com
    http://www.xiaobai.com
    http://www.etiantian.org
    http://www.jyw.com
    http://www.jyw.com
    http://www.xiaobai.com
    http://www.etiantian.org
    http://www.jyw.com
    http://www.baidu.com
    http://www.baidu.com
    http://www.jyw.com
    http://www.etiantian.org
    [root@bqh-118 ~]# awk -F / '{print $3}' qc2.log|sort|uniq -c|sort -r
          4 www.jyw.com
          3 www.etiantian.org
          3 www.baidu.com
          2 www.xiaobai.com

    方法二:cut方法

    [root@bqh-118 ~]# cut -d / -f3 qc2.log |sort -r|uniq -c
          2 www.xiaobai.com
          4 www.jyw.com
          3 www.etiantian.org
          3 www.baidu.com
    [root@bqh-118 ~]# cut -d / -f3 qc2.log |sort -r|uniq -c|sort -r
          4 www.jyw.com
          3 www.etiantian.org
          3 www.baidu.com
          2 www.xiaobai.com

    当然还有其它方法,在这里就简单介绍一下常用的方法。

  • 相关阅读:
    assignment of day nine
    不会互相转化,看我的
    enumrate用法
    这是作业
    这是表格
    本周回顾
    爬虫
    今天又学了啥?
    what have we learnt in day five
    OMG that's another blog!
  • 原文地址:https://www.cnblogs.com/su-root/p/10994482.html
Copyright © 2011-2022 走看看