一,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. 解决rtl8723be无线网卡驱动频繁断网问题

    买了新本子,用的是rtl8723be无线网卡,连WIFI时总是断网.Windows下好解决,Ubuntu下可就麻烦了,又是升级内核又是编译驱动的,折腾了一天,终于找到了解决办法: # echo &qu ...

  2. Apache虚拟主机设置

    Apache支持两种虚拟主机,一种是基于IP地址的,一种是基于域名的. 基于IP地址的虚拟机现在使用的很少,它需要一台服务器需要拥有多个IP地址.基于域名的虚拟主机要求服务器有一个IP地址就可以了,只 ...

  3. 自定义弹出div对话框

    <style type="text/css"> html,body{height:100%;overflow:hidden;} body,div,h2{margin:0 ...

  4. PHP之session_start()详解

    1.session的工作原理 (1)首先使用session_start()函数进行初始换 (2)当执行PHP脚本时,通过使用$_SESSION超全局变量注册session变量. (3)当PHP脚本执行 ...

  5. 即时Web通信总结

    即时Web通信在一些对数据实时性要求特别严格的应用中十分重要,如监控系统.报价系统.股票交易系统和即时在线聊天应用等,由于http协议设计当初是为了服务器端响应客户端的请求而设计的,只能在客户端主动发 ...

  6. 学习PYTHON第一天

    需要掌握的内容 1.编程语言 2.python   .  C#   JAVA 3.python:  pypy    cpython     jpython 4.执行方式 解释器 文件执行 5.指定解释 ...

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

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

  8. python偏函数(functool.partail)

    functool.partail 方法可以为一个函数生成偏函数 import functools def f(a,b,c,d): print a,b,c,d a='a' b='b' f1=functo ...

  9. Vijos P1063 迎春舞会之交谊舞 DP

    题目链接:https://vijos.org/p/1063 题意:有n(n <= 100)行,每行有2*i-1个可显字符'#'与'-',组成一个倒三角形,问由'-'组成的最大三角形的'-'的个数 ...

  10. js中的字典

    最近项目JS中需要建一个特殊的颜色库,需要用到类似C#中的dictionary的概念 然后一查发现JS没有dictionary 而是Array 初始化Array colorDic = new Arra ...