去除重复命令uniq

命令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
posted @ 2013-12-09 09:21  ITtecman  阅读(512)  评论(0编辑  收藏  举报