原文地址:http://blog.51yip.com/shell/1022.html

一,uniq干什么用的

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

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

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

二,uniq参数说明

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

四,实例详解

[zhangy@BlackGhost mytest]$ uniq -c uniqtest  
  1. 3 this is a test
  2. 1 i am tank
  3. 2 i love 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

从上例子中我们可以看出,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一起使用

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

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

[zhangy@BlackGhost mytest]$ uniq -i -c uniqtest  
  1. 3 this is a test
  2. 1 i am tank
  3. 2 i love tank
  4. 1 this is a test
  5. 2 whom have a try  //一个大写,一个小写
  6. 1 you  have a try
  7. 1 i want to abroad
  8. 1 those are good men
  9. 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就一样了。

linux 下的文本处理——除去重复行uniq命令相关推荐

  1. 《Linux指令从入门到精通》——4.3 Linux下全屏幕文本编辑器的命令行方式

    本节书摘来自异步社区<Linux指令从入门到精通>一书中的第4章,第4.3节,作者:宋磊 , 宋馥莉 , 雷文利著,更多章节内容可以访问云栖社区"异步社区"公众号查看 ...

  2. shell除去重复的行——uniq命令

    From: http://blog.163.com/redhumor@126/blog/static/1955478420123119218332/ 进行排序之后,您会发现有些行是重复的.有时候该重复 ...

  3. Linux下文本文件合并和去除重复

    转自:微点阅读(www.weidianyuedu.com)微点阅读 - 范文大全 - 免费学习知识的网站 Linux下处理文本的能力还是很强大的. 本文主要涉及到的命令为cat  uniq sort. ...

  4. shell 删除文本中的重复行(sort+uniq/awk/sed) (方法=效率啊)

    From: http://churuimin425.blog.163.com/blog/static/341298772012230112956712/ 删除文本中的重复行(sort+uniq/awk ...

  5. linux在指定行添加内容,linux下利用shell在指定的行添加内容的方法

    linux下利用shell在指定的行添加内容的方法 在linux的一些配置中总会要进行某个文件中的某行的操作,进行增加,修改,删除等操作. 而这里主要是进行的是指定的行添加数据的操作: 脚本如下: s ...

  6. LINUX下用CTRL+R快速搜索HISTORY历史命令,快速索引到之前使用过的命令行语句

    LINUX下用CTRL+R快速搜索HISTORY历史命令,快速索引到之前使用过的命令行语句 前提是,搜索已经使用的命令,否则是查不出来结果的. ctrl+r 用途:反向搜索执行过的命令.(revers ...

  7. linux下因修改/etc/sudoers 从而导致sudo命令无法使用

    linux下因修改/etc/sudoers 从而导致sudo命令无法使用报错如下: ~$ sudo sudo: >>> /etc/sudoers:syntax error 在行 21 ...

  8. linux 下生成docx,linux下创建、删除文件和文件夹命令.docx

    linux下创建.删除文件和文件夹命令.docx 还剩 6页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,喜欢就下载吧,价低环保! 内容要点: 学习 Linux 二(创建.删除文件和文件夹 ...

  9. linux sftp没有读写权限,Linux下SFTP用户权限设置条件及实现命令

    Linux下SFTP用户权限设置条件及实现命令 众所周知SFTP账号是基于SSH账号的,所以在默认情况下访问服务器的权限是非常大的,今天的教程就是教大家进行SFTP用户权限设置. 必要条件: 你的op ...

最新文章

  1. 解决java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed
  2. QuickSkin简单学习--控制结构
  3. ebpf深入理解和应用介绍
  4. Ant 基本语法的使用示列
  5. web前端的十种jquery特效及源码下载
  6. php笔试完就让我回去了,昨晚hr给了我一个面试题,说过了就安排我面试
  7. Java线程经典面试题
  8. Python 复制文件并重命名
  9. Android,APP图标尺寸
  10. 恶作剧:被乔布斯整蛊也很快乐
  11. Chrome网页观看百度云视频加速
  12. HTML 超文本标记语言
  13. StataIC——线性回归计算个股的β值
  14. Docker Swarm集群实践——部署篇
  15. 烽火2640路由器命令行手册-04-网络协议配置命令
  16. Oracle数据库操作:将有顿号的一条数据拆分为多行
  17. 百度图片批量下载助手
  18. 内部异常 FileNotFoundException: 设备未就绪。 (异常来自 HRESULT:0x80070015)
  19. java.lang.Exception: Method XXX should have no parameters
  20. 吞下西甲英超中超成体育大胃王,PPTV还有哪些大招?

热门文章

  1. 测试你有学计算机天赋,测试你的天赋,准爆了!
  2. cocos2d-x 音乐音效
  3. 74HC245引脚定义 使用方法
  4. 内网远程控制软件哪个好用
  5. 男人:别光着上身睡觉
  6. STM8S103之tim2捕获周期
  7. Unity Shader-真实下雨路面
  8. powershell 使用_如何使用PowerShell生成随机名称和电话号码
  9. 杰理之优化电脑长时间播放没声音【篇】
  10. iOS 渐变色 以及 镂空效果的实现(Mask的妙用)以及镂空文字的实现