Linux常用命令-uniq

命令

uniq

描述

report or omit repeated lines
过滤重复行

用法

1
uniq [OPTION]... [INPUT [OUTPUT]]

选项

1
2
3
4
5
6
7
8
9
10
11
Options:
-c 显示统计信息,即每行重复的次数
-d 只显示重复行
-i 忽略大小写
-u 只显示唯一行
-z 不添加换行符
-f, --skip-fields=N 忽略比较前N个字段,分隔符默认为空格和tab
-s, --skip-chars=N 忽略比较前N个字符
-w, --check-chars=N 比较行中不超过N个字符
--group[=METHOD] 显示所有分组,用空行分隔,METHOD={separate(default),prepend,append,both}
-D, --all-repeated[=METHOD] 显示所有重复行,用空行分隔,METHOD={none(default),prepend,separate}

注意

uniq命令不会自动排序文件,需要先通过sort等命令排序文件后在使用uniq去重

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
$ more a
aa
abc
ab
aa
AA
abc
# -c显示每行重复的次数
$ sort a |uniq -c
2 aa
1 AA
1 ab
2 abc
# -i忽略大小写
$ sort a |uniq -ic
3 aa
1 ab
2 abc
# -d只显示重复行
$ sort a |uniq -d
aa
abc
# -u只显示唯一行
$ sort a |uniq -u
AA
ab
# 分组显示所有行
$ sort a |uniq --group
aa
aa

AA

ab

abc
abc