日期:2014-05-16  浏览次数:20737 次

实例详细说明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