命令uniq经常用于去除一个文本中的重复行。用sort命令也可以去除重复行,但二者有较大区别:用sort去除重复行时,sort将整个文本中的多个重复行去除,仅保留一行,而uniq会将多个连续重复的行去除,仅保留一行。
- 命令格式:
uniq [option] [input [output]]
- 常用选项:
c:输出重复行的重复次数。
d:仅输出重复的行。
f:忽略一些字段,只比较指定的字段。
i:忽略大小写。
s:忽略一些字符,只比较指定的字符(从s指定的字符处开始对比)。
u:输出不重复的行。
w:指定要比较的字符位置。
用法示例:
(1)直接使用uniq命令:
[root@localhost test]# cat uniq_test 1111111111111 2222222222222 3333333333333 2222222222222 2222222222222 2222222222222 4444444444444 [root@localhost test]# uniq uniq_test 1111111111111 2222222222222 3333333333333 2222222222222 4444444444444
(2)使用选项c和d输出重复行信息:
[root@localhost test]# uniq -c uniq_test 1 1111111111111 1 2222222222222 1 3333333333333 3 2222222222222 1 4444444444444
[root@localhost test]# uniq -d uniq_test 2222222222222
(3)使用选项u输出文件中没有重复的行:
[root@localhost test]# uniq -u uniq_test 1111111111111 2222222222222 3333333333333 4444444444444
(4)有时可能只需要对几个字段或几个字符进行比较,此时可以结合选项f和选项s去除这些重复的行:
[root@localhost test]# cat uniq_test1
aaa bbbAA
aaa bbbAA
aaa cbbAA
bba abbAA
BDB AAABB
BCB AAABB
ABB AACBB
#使用选项f忽略第1个字段,然后使用s3指定从第2个字段的第3个字符出开始对比 [root@localhost test]# uniq -f1 -s3 uniq_test1 aaa bbbAA BDB AAABB ABB AACBB