一,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. async:false同步请求,浏览器假死

    // 异步请求导致数据错乱 // function get_num(){ // $("input[name='monitor']").eq(1).attr('checked',tr ...

  2. linux 配置Socks5

    1.配置 Socks5 编译环境. yum -y install gcc automake autoconf libtool make 2.安装 Socks5 需要的包. yum -y install ...

  3. Make和Makefile

    无论是在Linux还是在Unix环境中,make都是一个非常重要的编译命令.不管是自己进行项目开发还是安装应用软件,我们都经常要用到make或make install.利用make工具,我们可以将大型 ...

  4. Git-it:一个学习Git和Github的教程(软件)

    Git-it https://github.com/jlord/git-it 2016-08-01 在FreeCodeCamp的引导下了解到的Git-it.OSC有收录. Git-it是一个指导使用G ...

  5. php QQ登录

    基本原理: 就是获取唯一的openid,此值只要与自己数据库表中的值对应,就说明是此用户, 没有,则说明是新用户,其实就是找对应关系,因为openid与QQ号是唯一对应关系 放置按钮: 如在首页 in ...

  6. 计算连续的IP地址

    题目:要求计算连续的IP地址. 举例:起始IP为192.168.2.2,IP总个数为3,那么要求得的所有IP的为192.168.2.2,192.168.2.3,192.168.2.4.再举个例子,起始 ...

  7. Visual Studio 2010下载 + 附破解方法

    Visual Studio 2010下载 + 附破解方法 1.Microsoft Visual Studio 2010下载 旗舰版(Ultimate) http://download.microsof ...

  8. Oracle RAC ORACLE_SID的设置,报错(ORA-01078, LRM-00109)

    [oracle@zen2 ~]$ echo $ORACLE_SID ORAC [oracle@zen2 ~]$ sqlplus /nolog SQL :: Copyright (c) , , Orac ...

  9. cocos2dx输出信息重定向到控制台

    重定向输出到控制台,方便调试,代码: // uncomment below line, open debug console #define USE_WIN32_CONSOLE int APIENTR ...

  10. iOSApp -Monkey测试

    IOS操作系统不像Android系统那么方便,各种限制也比较多,目前我的建议还是直接在模拟器上执行monkey测试.如果需要在真机上面执行,可以参考文档: http://testerhome.com/ ...