博客园  :: 首页  :: 管理

每天一个Linux命令-uniq.

Posted on 2020-08-02 19:06  520_1351  阅读(178)  评论(0编辑  收藏  举报

uniq命令大部分情况下都是要与sort命令结合使用的、即先排序、然后再uniq命令

常用的一些实例如下:

-i 选项,可以在比较时忽略大小写

-c选项,最为常用,会统计出每个重复项,重复的次数

文件样例test.txt:

001
aaa
001
http://www.cnblogs.com/5201351

1、去除重复项之后再输出: 

sort 1.txt | uniq

2、仅输出含有重复项的行:

sort 1.txt | uniq -d               #相当于输出重得项后,再去重输出,即输出的每个条目都是独一无二的条目,
sort 1.txt | uniq -D               #输出全部的重复项,一个条目的重复项有多少个就输出多少

3、 只输出没有重复项的值(即排序后独一无二的行)

sort 1.txt | uniq -u

 

++++++++++++++++++++++++++++++++++++++++

uniq的高级用法:

样例文件,md5result.txt

61763cc8db82201197154feea2988086  1.txt
b026324c6904b2a9cb4b88d6d61c81d1  2.txt
61763cc8db82201197154feea2988086  3.txt
61763cc8db82201197154feea2988086  4.txt

1、在比较时,只根据前面的32个字符比较,这里因为第1行和第3行的前32个字符一样,因此只会被视为重复项:

[5201351@localhost ~]$ sort md5result.txt |uniq -w 32
61763cc8db82201197154feea2988086  1.txt
b026324c6904b2a9cb4b88d6d61c81d1  2.txt

2、在1的基础上,如果需要输出全部重复项(仅前32个字符),就得加上-D选项:

[5201351@localhost ~]$ sort md5result.txt |uniq -w 32 -D
61763cc8db82201197154feea2988086  1.txt
61763cc8db82201197154feea2988086  3.txt
61763cc8db82201197154feea2988086  4.txt

3、对于重复的项,除了第一个,其他的都显示出来(可以用于删除同样内容的文件案例,重复文件只保留第一个)

[5201351@localhost ~]$ sort md5result.txt |uniq -w 32 -D |awk 'a[$1]++'
61763cc8db82201197154feea2988086  3.txt
61763cc8db82201197154feea2988086  4.txt

 

 

 

 

尊重别人的劳动成果 转载请务必注明出处:https://www.cnblogs.com/5201351/p/13420140.html