排序命令uniq

uniq命令可以去除排序过的文件中的重复行,因此uniq经常和sort合用.

语法:

uniq [-icd]

常见参数:

-i : 忽略大小写字符的不同;

-c : 在每列旁边显示改行重复出现的次数;

-d : 仅显示重复出现的行列;

-u : 仅显示不重复出现的行列;

 

<1>uniq起作用的时,所有重复行必须是相邻的,不然会出现以下结果:

[root@sqj2015 ~]# last | cut -d ‘ ‘ -f 1 | uniq -c

1 root

1 reboot

1 root

1 reboot

23 root

1 reboot

1

1 wtmp

但我们先进行sort排序呢?

[root@sqj2015 ~]# last | cut -d ‘ ‘ -f 1 | sort | uniq -c

1

3 reboot

25 root

1 wtmp

这应该才是我们想要得到的结果,所以uniq一般跟sort合用才能达到理想效果.

 

<2>uniq -d/-u选项

uniq -d选项只会显示出重复出现的行列,如下:

[root@sqj2015 ~]# last | cut -d ‘ ‘ -f 1 | sort | uniq -cd

3 reboot

25 root

而uniq -u选项确只会显示出不重复出现的行列,如下:

[root@sqj2015 ~]# last | cut -d ‘ ‘ -f 1 | sort | uniq -cu

1

1 wtmp

为了脱出是否重复出现问题,我们加入了-c选项,来计数,是不是更清晰.