Chinaunix首页 | 论坛 | 博客
  • 博客访问: 7593104
  • 博文数量: 368
  • 博客积分: 9600
  • 博客等级: 上校
  • 技术积分: 18875
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-01 00:00
文章分类

全部博文(368)

文章存档

2017年(9)

2016年(19)

2015年(3)

2014年(6)

2013年(8)

2012年(78)

2011年(66)

2010年(135)

2009年(44)

分类: LINUX

2010-04-23 14:56:17

uniq用法
u n i q
用来从一个文本文件中去除或禁止重复行。一般u n i q假定文件已分类,并且结果正确。
我们并不强制要求这样做,如果愿意,可以使用任何非排序文本,甚至是无规律行。
可以认为u n i q有点像s o r t命令中唯一性选项。对,在某种程度上讲正是如此,但两者有一个重要区别。s o r t的唯一性选项去除所有重复行,而u n i q命令并不这样做。重复行是什么?在u n i q里意即持续不断重复出现的行,中间不夹杂任何其他文本,现举例如下:

CODE:

[sam@chenwy sam]$ cat myfile.txt
May Day
May Day
May Day
Going DOwn
May Day
May Day.
May Day


u n i q
将前三个May Day看作重复副本,但是因为第4行有不同的文本,故并不认为第五行持续的May Day为其副本。u n i q将保留这一行。
命令一般格式:

CODE:

$uniq -u d c -f input-file out-file



QUOTE:

其选项含义:
-u
只显示不重复行。
-d
只显示有重复数据行,每种重复行只显示其中一行
-c
打印每一重复行出现次数。
-f n
为数字,前n个域被忽略。
一些系统不识别- f选项,这时替代使用- n


创建文件m y f i l e . t x t,在此文件上运行u n i q命令。

CODE:

[sam@chenwy sam]$ uniq myfile.txt
May Day
Going DOwn
May Day
May Day.
May Day


注意第5行保留下来,其文本为最后一行May Day。如果运行sort -u,将只返回May DayGoing Down

连续重复出现
使用- c选项显示行数,即每个重复行数目。本例中,行May Day重复出现三次

CODE:

[sam@chenwy sam]$ uniq -c myfile.txt
      3 May Day
      1 Going DOwn
      1 May Day
      1 May Day.
      1 May Day


1.
不唯一
使用- d显示重复出现的不唯一行:

CODE:

[sam@chenwy sam]$ uniq -d myfile.txt
May Day



CODE:

[sam@chenwy sam]$ uniq -u myfile.txt
Going DOwn
May Day
May Day.


2.
对特定域进行测试
使用- n只测试一行一部分的唯一性。例如- 5意即测试第5域后各域唯一性。域从1开始记数。
如果忽略第1域,只测试第2域唯一性,使用- n2,下述文件包含一组数据,其中第2域代表组代码。

CODE:

[sam@chenwy sam]$ cat parts.txt
AK123 OPP Y13
DK122 OPP Y24
EK999 OPP M2



CODE:

[sam@chenwy sam]$ cat parts.txt
AK123 33 46 6u OPP ty yu
DK122 5h 67 y8 OPP ty yu
EK999 56 56 78 IIY ty yu


运行u n i q,将返回所有行。因为这个文件每一行都不同。

CODE:

[sam@chenwy sam]$ cat parts.txt
1 AK123 33 46 6u OPP ty yu
1 DK122 5h 67 y8 OPP ty yu
1 EK999 56 56 78 IIY ty yu


如果指定测试在第4域后,结果就会不同。u n i q会比较三个相同的O PP,因此将返回一行。

CODE:

[sam@chenwy sam]$ uniq -f4 -c parts.txt
      2 AK123 33 46 6u OPP ty yu
      1 EK999 56 56 78 IIY ty yu


指定第5域,即从第6域开始比较:

CODE:

[sam@chenwy sam]$ uniq -f5 -c parts.txt
      3 AK123 33 46 6u OPP ty yu


如果‘- f’返回错误,替代-n使用:

阅读(8178) | 评论(1) | 转发(3) |
0

上一篇:Seq命令的用法

下一篇:tr命令学习

给主人留下些什么吧!~~

CHINA100YB2015-10-06 16:41:47

谢谢,学习了,感谢分享!