欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

shell命令之uniq

程序员文章站 2022-03-11 12:01:48
...

uniq,顾名思义是去重,但需注意,它统计的是相邻两行是否重复,因此很多时候会配合sort。
常用参数如下:

-u   只显示不重复的行
-c   每行开头显示重复行出现的次数,重复行显示一次
-d   只显示重复行
-i   对大小写不敏感
-f   跳过n个域
-s   跳过n个字符

举例开始,文件file.txt如下:

this is a test  
this is a test  
this is a test  
i am tank  
i love tank  
i love tank  
this is a test  
whom have a try  
WhoM have a try  
you  have a try  
i want to abroad  
those are good men  
we are good men  

1、不加参数的uniq

uniq file.txt

this is a test
i am tank
i love tank
this is a test
whom have a try
WhoM have a try
you  have a try
i want to abroad
those are good men
we are good men

2、显示不重复的行

uniq -u Desktop/test

i am tank
this is a test
whom have a try
WhoM have a try
you  have a try
i want to abroad
those are good men
we are good men

3、统计行的次数

uniq -c file.txt
   3 this is a test
   1 i am tank
   2 i love tank
   1 this is a test
   1 whom have a try
   1 WhoM have a try
   1 you  have a try
   1 i want to abroad
   1 those are good men
   1 we are good men

4、忽略大小写,并统计重复行次数

uniq -i -c file.txt
   3 this is a test
   1 i am tank
   2 i love tank
   1 this is a test
   2 whom have a try    //注意这里和上面例子的区别
   1 you  have a try
   1 i want to abroad
   1 those are good men
   1 we are good men

5、显示重复行

uniq -d file.txt

this is a test
i love tank

6、跳过n个域

uniq -f 1 -c file.txt

   3 this is a test
   1 i am tank
   2 i love tank
   1 this is a test
   2 whom have a try
   1 you  have a try
   1 i want to abroad
   2 those are good men

这里跳过第一个域,所以1至3行跳过this,4至6行跳过i,当whom和whoM被跳过时,这两行被当作一样的,至于接下来的一行,跳过you后,还剩2个空格,和上面两行并不一样,这里需要注意。

7、跳过n个字符

uniq -s 4 -c file.txt

   3 this is a test
   1 i am tank
   2 i love tank
   1 this is a test
   3 whom have a try
   1 i want to abroad
   1 those are good men
   1 we are good men

这里跳过前4个字符,所以和上面的例子类似,但是此时whoM have a try 和 you have a try就是一样的了。

相关标签: shell uniq