`

实例详细说明linux下去除重复行命令uniq

阅读更多

一、uniq干什么用的

linux下去除文本重复行的命令之一。从网上看来两个注意事项:

1,对文本操作时,它一般会和sort命令进行组合使用,因为uniq 不会检查重复的行,除非它们是相邻的行。如果您想先对输入排序,使用sort -u。

2,对文本操作时,若域中为先空字符(通常包括空格以及制表符),然后非空字符,域中字符前的空字符将被跳过

二、uniq参数说明

用法:uniq [选项]... [文件] 
从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出。 
 
不附加任何选项时匹配行将在首次出现处被合并。 
 
长选项必须使用的参数对于短选项时也是必需使用的。 
 -c, --count              //在每行前加上表示相应行目出现次数的前缀编号 
 -d, --repeated          //只输出重复的行 
 -D, --all-repeated      //只输出重复的行,不过有几行输出几行 
 -f, --skip-fields=N     //-f 忽略的段数,-f 1 忽略第一段 
 -i, --ignore-case       //不区分大小写 
 -s, --skip-chars=N      //根-f有点像,不过-s是忽略,后面多少个字符 -s 5就忽略后面5个字符 
 -u, --unique            //去除重复的后,全部显示出来,根mysql的distinct功能上有点像 
 -z, --zero-terminated   end lines with 0 byte, not newline 
 -w, --check-chars=N      //对每行第N 个字符以后的内容不作对照 
 --help              //显示此帮助信息并退出 
 --version              //显示版本信息并退出

 

 

三,测试文本文件uniqtest

  1. this is a test  
  2. this is a test  
  3. this is a test  
  4. i am tank  
  5. i love tank  
  6. i love tank  
  7. this is a test  
  8. whom have a try  
  9. WhoM have a try  
  10. you  have a try  
  11. i want to abroad  
  12. those are good men  
  13. we are good men  

四,实例详解

  1. [zhangy@BlackGhost mytest]$ uniq -c uniqtest  
  2.  3 this is a test  
  3.  1 i am tank  
  4.  2 i love tank  
  5.  1 this is a test           //和第一行是重复的   
  6.  1 whom have a try  
  7.  1 WhoM have a try  
  8.  1 you  have a try  
  9.  1 i want to abroad  
  10.  1 those are good men  
  11.  1 we are good men  

从上例子中我们可以看出,uniq的一个特性,检查重复行的时候,只会检查相邻的行。重复数据,肯定有很多不是相邻在一起的。

  1. [zhangy@BlackGhost mytest]$ sort uniqtest |uniq -c  
  2.  1 WhoM have a try  
  3.  1 i am tank  
  4.  2 i love tank  
  5.  1 i want to abroad  
  6.  4 this is a test  
  7.  1 those are good men  
  8.  1 we are good men  
  9.  1 whom have a try  
  10.  1 you  have a try  

这样就可以解决上个例子中提到的问题

  1. [zhangy@BlackGhost mytest]$ uniq -d -c uniqtest  
  2.  3 this is a test  
  3.  2 i love tank  

uniq -d 只显示重复的行

  1. [zhangy@BlackGhost mytest]$ uniq -D uniqtest  
  2. this is a test  
  3. this is a test  
  4. this is a test  
  5. i love tank  
  6. i love tank  

uniq -D 只显示重复的行,并且把重复几行都显示出来。他不能和-c一起使用

  1. [zhangy@BlackGhost mytest]$ uniq -f 1 -c uniqtest  
  2.  3 this is a test  
  3.  1 i am tank  
  4.  2 i love tank  
  5.  1 this is a test  
  6.  2 whom have a try  
  7.  1 you  have a try  
  8.  1 i want to abroad  
  9.  2 those are good men   //只有一行,显示二行   

在这里those只有一行,显示的却是重复了,这是因为,-f 1 忽略了第一列,检查重复从第二字段开始的。

  1. [zhangy@BlackGhost mytest]$ uniq -i -c uniqtest  
  2.  3 this is a test  
  3.  1 i am tank  
  4.  2 i love tank  
  5.  1 this is a test  
  6.  2 whom have a try  //一个大写,一个小写   
  7.  1 you  have a try  
  8.  1 i want to abroad  
  9.  1 those are good men  
  10.  1 we are good men  

检查的时候,不区分大小写

  1. [zhangy@BlackGhost mytest]$ uniq -s 4 -c uniqtest  
  2. 3 this is a test  
  3. 1 i am tank  
  4. 2 i love tank  
  5. 1 this is a test  
  6. 3 whom have a try   //根上一个例子有什么不同   
  7. 1 i want to abroad  
  8. 1 those are good men  
  9. 1 we are good men  

检查的时候,不考虑前4个字符,这样whom have a try 就和 you have a try 就一样了。

  1. [zhangy@BlackGhost mytest]$ uniq -u uniqtest  
  2. i am tank  
  3. this is a test  
  4. whom have a try  
  5. WhoM have a try  
  6. you  have a try  
  7. i want to abroad  
  8. those are good men  
  9. we are good men  

去重复的项,然后全部显示出来

  1. [zhangy@BlackGhost mytest]$ uniq -w 2 -c uniqtest  
  2.  3 this is a test  
  3.  3 i am tank  
  4.  1 this is a test  
  5.  1 whom have a try  
  6.  1 WhoM have a try  
  7.  1 you  have a try  
  8.  1 i want to abroad  
  9.  1 those are good men  
  10.  1 we are good men  

对每行第2个字符以后的内容不作检查,所以i am tank 根 i love tank就一样了。

 

转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/shell/1022.html

 

分享到:
评论

相关推荐

    uniq命令 去除文件中的重复行

    我们应当注意的是,它和sort的区别,sort只要有重复行,它就去除,而uniq重复行必须要连续,也可以用它忽略文件中的重复行。 语法格式:uniq [参数] [文件] 常用参数: -c 打印每行在文本中重复出现的次数 -d ...

    linux下uniq和sort命令用法详解.docx

    uniq 命令是 Linux 中的一个文本处理命令,用于去除文本中的重复行。该命令读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该命令加工后...

    linux下uniq和sort命令用法.docx

    uniq 命令是 Linux 中的一个文本处理命令,用于删除或显示文本文件中的重复行。它可以读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该...

    LINUX处理文本命令

    LINUX处理文本命令 处理文本和文本文件的命令 一. sort 文件排序, 通常用在管道中当过滤器来使用. 这个命令可以依据指定的关键字或指定的字符位置, 对文件行进行排序. 使用-m选项, 它将会合并预排序的输入文件. 想...

    Linux操作命令八.doc

    uniq 命令是 Linux 中一个有用的命令,它从标准输入或单个文件名参数接受数据有序列表,默认情况下,从数据列表中删除任何重复行。uniq 命令的格式为 uniq [选项][文件名]。uniq 命令有八个常用的参数: * -c 在每...

    linux sort join cut paste split uniq

    详细介绍linux下用于处理文本文件分类、合并、分割操作的工具 如:sort、uniq、join、cut、paste、split

    Linux命令 sort、uniq、tr工具详解

    主要介绍了Linux命令 sort、uniq、tr工具详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

    windows下的uniq

    windows下的uniq,很好用的小东西,配合Gawk使用更佳。

    Linux Shell学习:uniq命令使用方法介绍

    uniq命令的作用:显示唯一的行,对于那些连续重复的行只显示一次! 本文将通过实践实例说明

    Linux相关命令详解

    这个资源摘要信息详细介绍了 Linux 相关命令的语法规则、常用选项和示例应用,涵盖了文本处理、数据分析、搜索和打印、排序、去除重复、截取特定列、合并文件、分割文件和比较文件差异等多个方面。

    Linux下查看CPU型号,内存大小,硬盘空间命令.docx

    `/proc/cpuinfo`文件包含了CPU的详细信息,`grep`命令用于筛选出物理ID,`uniq`命令用于删除重复行,`wc`命令用于统计行数。 1.2 查看CPU核数 命令:`cat /proc/cpuinfo | grep cpu cores | uniq` 该命令用于查看...

    Linux学习笔记【博文整理系列】

    Linux笔记——命令:Sort,uniq,join,cut,paste,split Linux笔记——shell基础:变量&本地变量&位置变量&特定变量参数 Linux笔记——条件测试test Linux笔记——控制流 Linux笔记——shell补充:参数传递&函数等 Linux...

    Shell中的sort和uniq命令

    Shell中的sort和uniq命令 sort :通常用来排序 uniq :通常对重复字符进行处理 sort -n sort -r sort -u 去重,u: unique(独一无二的) sort -o 指定输出文件 sort -t 指定分隔符 sort -k 指定列排序(配合-t使用) ...

    linux常用命令大全.docx

    linux常用命令大全 Linux系统提供了大量的命令用于文件管理、系统配置、网络... uniq:报告或省略重复的行。 cut:从每行中删除指定的部分。 paste:合并文件的行。 sed / awk:强大的文本处理工具,用于模式扫描和

    linux Shell(脚本)编程入门 实例讲解详解.docx

    13.uniq 命令: 删除文本文件中的重复行。 Shell 编程的应用: 1.自动化系统管理任务。 2.处理数学表达式。 3.使用环境变量。 Shell 编程是一门非常灵活和强大的编程语言,能够自动化大量的任务,提高工作效率和...

    linux 核心命令源码

    linux 核心命令源码(cp mv cat chgrp chown cut date df du echo env expand expr find force fs group head hostname join kill link ls mkdir mv nice od paste printf ptx rm selinux seq sleep sort split stat...

    Linux文本处理命令合集

    主要涉及shell脚本中文本处理常见命令,diff/patch查找文本差异,字符串截取cut、tr、uniq等

    Linux常用命令,对于Linux初学者来说还是挺不错的~

    * `uniq`:用于删除文本文件中的重复行,例如`uniq file`将删除文件file中的重复行。 系统管理命令 * `hostname`:用于显示当前主机的名称,例如`hostname`将显示当前主机的名称。 * `lpr`:用于打印文本文件,...

    常用linux命令小结

    因为不耐烦反复的查,索性自己总结了一个pdf,里面包括常用的linux命令,包括gcc,grep,tar,sed,find,screen,nohup,scp等,另外还有一些常用的文本处理命令如cat,split,head,tail,uniq,wc,more,less等。

    Linux的服务器常用命令[定义].pdf

    本电子书将详细介绍Linux服务器常用命令的定义、分类和使用方法。 一、目录操作命令 * apropos word:显示和word相关的命令 * cd:改变当前目录 * pwd:显示当前目录 * mkdir:创建目录 * rmdir:删除目录 * ls:...

Global site tag (gtag.js) - Google Analytics