5.4 使用uniq删除重复内容
如果文件(或标准输出)中有多行完全相同的内容,我们很自然希望能删除重复的行,同时还可以统计出完全相同的行出现的总次数,uniq命令就能帮助解决这个问题。下面列出了该命令常用的参数:
- [root@localhost ~]# uniq [-ic]
#-i
忽略大小写
#-c
计算重复行数
为演示uniq的用法,这里首先创建一个文件,文件名和文件内容如下:
- [root@localhost ~]# cat uniq.txt
abc
123
abc
123
需要说明的是,uniq一般都需要和sort命令一起使用,也就是先将文件使用sort进行排序(这样重复的内容就能显示在连续的几行中),然后再使用uniq删除掉重复的内容(uniq的作用就在于删除连续的完全一致的行)。读者观察一下以下两次命令的输出,第一次直接cat输出文件,然后使用uniq命令,输出的内容居然和原文件uniq.txt的内容是一样的,这是因为uniq命令只会对比相邻的行,如果有连续相同的若干行则删除重复内容,仅输出一行。如果相同的行非连续,则uniq命令不具备删除效果。第二次则在使用sort排序后再使用uniq命令,这时就达到了预期的效果。
- [root@localhost ~]# cat uniq.txt | uniq
abc
123
abc
123
[root@localhost ~]# cat uniq.txt | sort | uniq
123
abc
#
使用-c
参数就会在每行前面打印出该行重复的次数
[root@localhost ~]# cat uniq.txt | sort | uniq -c
2 123
2 abc