一,uniq干什么用的

文本中的重复行,基本上不是我们所要的,所以就要去除掉。linux下有其他命令可以去除重复行,但是我觉得uniq还是比较方便的一个。使用uniq的时候要注意以下二点

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

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

二,uniq参数说明

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

其中-z不知道有什么用

三,测试文本文件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就一样了。

 

uniq linux下去除重复行命令的更多相关文章

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

    地址:http://blog.51yip.com/shell/1022.html 一,uniq干什么用的 文本中的重复行,基本上不是我们所要的,所以就要去除掉.linux下有其他命令可以去除重复行,但 ...

  2. linux 下删除重复行-- uniq 与 awk

    $ cat file liw liw liw hdsui mdksjd liw $ cat file | uniq -u # 只删除相邻的,不保留重复行 hdsui mdksjd liw $ cat ...

  3. Linux合并文件、去除重复行的命令

    Linux合并文件命令: awk '{printf("%s\n",$0)}' YQ-*101?.txt >  123.txt   linux去除重复行命令:cat YQ-10 ...

  4. uniq 去除重复行

    1.命令功能 uniq可以输出或忽略文件中的重复行,经常需要使用sort先对文件进行排序,然后使用uniq去重并计数. 2.语法格式 uniq  option  input uniq   选项    ...

  5. linux shell脚本查找重复行/查找非重复行/去除重复行/重复行统计

    转自:http://blog.sina.com.cn/s/blog_6797a6700101pdm7.html 去除重复行 sort file |uniq 查找非重复行 sort file |uniq ...

  6. linux下使用无线网卡的命令行方法(wifi,iwconfig)

    原文地址:linux下使用无线网卡的命令行方法(wifi,iwconfig) 作者:andyhzw (1)首先关闭开发板的有线网卡 [root@FriendlyARM /]# ifconfig eth ...

  7. Linux下一款可以使用命令行的pdf阅读器

    Zathura是linux下一款用命令行控制打pdf阅读器,并且基本打使用方法和vim很相似.对于喜欢键盘操作的用户来说的确是一个不错的选择. ubuntu下的安装命令: sudo apt-get i ...

  8. linux下如何使用sftp命令【转】

    linux下如何使用sftp命令 from:   http://www.cnblogs.com/chen1987lei/archive/2010/11/26/1888391.html sftp 是一个 ...

  9. linux下mysql操作的命令

    最近在学习mysql,还是只菜鸟,找到下面篇文章对初学者挺有用的,所以共享下 1.linux下启动mysql的命令:   mysqladmin start /ect/init.d/mysql star ...

随机推荐

  1. MongoDB入门三步曲3--部署技术:主备、副本集和数据分片

    mongodb部署--主备.副本及数据分片 主备复制 副本集 数据分片 主备复制 主备复制是最基本的一种多点部署方案,在读写分离.热备份.数据恢复等方面具有重要作用. 在真实的生产环境,主备库肯定需要 ...

  2. [旧博客]Python 第一次

    决定学习Python,发现其需要安装的东西很小,只需要在官方网站下载和15MB左右的安装包,Python for windows.安装完毕就双击IDE快捷方式就打开IDE了. 你很发现IDE好像很面熟 ...

  3. Ubuntu 下部署asp.net运行环境

    在Ubuntu下部署asp.net运行环境,网上教程很多,基本都是编译Mono源码,然后安装jexus.但是可能是我最近RP不太好,编译Mono源码一直都是失败,无奈之下只好找另外的方法安装了. 网上 ...

  4. hdu 3336 Count the string KMP+DP优化

    Count the string Problem Description It is well known that AekdyCoin is good at string problems as w ...

  5. 【BZOJ】1006: [HNOI2008]神奇的国度 弦图消除完美序列问题

    1006: [HNOI2008]神奇的国度 Description K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则. 他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的 ...

  6. Java集合Map接口与Map.Entry学习

    Java集合Map接口与Map.Entry学习 Map接口不是Collection接口的继承.Map接口用于维护键/值对(key/value pairs).该接口描述了从不重复的键到值的映射. (1) ...

  7. HIVE 的MAP/REDUCE

    对于 JOIN 操作: Map: 以 JOIN ON 条件中的列作为 Key,如果有多个列,则 Key 是这些列的组合 以 JOIN 之后所关心的列作为 Value,当有多个列时,Value 是这些列 ...

  8. 一步步学习NHibernate(1)——NHibernate介绍

    请注明转载地址:http://www.cnblogs.com/arhat 第十五章 从本章开始,老魏将给大家一起学习NHibernate这个流行的ORM框架,本来老魏想要和大家一起探讨微软的EF框架的 ...

  9. HTTP - PUT 上传文件/Shell (二)

    上一篇文章 HTTP - PUT 上传文件/Shell 讲到自己搭了一个环境,去测试HTTP - PUT上传Shell.最近又遇到几个PUT上传的例子,也成功上传了几次,来分享一下思密达. 0x00 ...

  10. Python之创建单元素tuple

    tuple和list一样,可以包含 0 个.1个和任意多个元素. 包含多个元素的 tuple,前面我们已经创建过了. 包含 0 个元素的 tuple,也就是空tuple,直接用 ()表示: >& ...