过滤标准输入的相邻匹配行,写入标准输出(Filter adjacent matching lines from INPUT (or standard input),writing to OUTPUT (or standard output).)
简单作用解释为,删除文件中多余的相邻相同行,仅保留一行。
如果没有选项,匹配的行将合并到第一个出现(With no options, matching lines are merged to the first occurrence.)
Usage: uniq [OPTION]... [INPUT [OUTPUT]]
OPTION:
[root@node2 Desktop]# cat file1.txt
AAAA
aaaa
aaaa
aaaa
dddd
cccc
bbbb
bbbb
[root@node2 Desktop]# uniq file1.txt
AAAA
aaaa
dddd
cccc
bbbb
[root@node2 Desktop]#
去重说明:相邻连续重复的行去重留一行,其他的输出不变
[root@node2 Desktop]# uniq -c file1.txt
1 AAAA
3 aaaa
1 dddd
1 cccc
2 bbbb
[root@node2 Desktop]#
去重说明:在输出行首输出重复的次数,用于统计重复次数,一般先sort排序,然后uniq去重
[root@node2 Desktop]# cat file1.txt
AAAA
aaaa
aaaa
aaaa
dddd
cccc
bbbb
bbbb
[root@node2 Desktop]# uniq -i file1.txt
AAAA
dddd
cccc
bbbb
[root@node2 Desktop]#
去重说明:-i参数是忽略大小写,则大写的AAAA与小写的aaaa视为相同的行,去重只显示一次
[root@node2 Desktop]# cat file2.txt
AAAA
aaaa
aaaa
aaaa
aabb
ddbb
dddd
cccc
dddd
bbbb
bbbb
eeee
[root@node2 Desktop]# uniq -s 2 file2.txt
AAAA
aaaa
aabb
dddd
cccc
dddd
bbbb
eeee
[root@node2 Desktop]#
去重说明:-s参数是每行前n个字符后对比,相同则去重输出,那么aabb与ddbb两行去掉前两个字符后都是bb相同,则输出只显示aabb,不显示ddbb
[root@node2 Desktop]# uniq -w 2 file2.txt
AAAA
aaaa
ddbb
cccc
dddd
bbbb
eeee
[root@node2 Desktop]#
去重说明:-w参数是每行前n个字符对比,相同则去重输出,那么aaaa与aabb前两个字符都是aa相同,则输出只显示aaaa,不显示aabb;ddbb与dddd前两个字符都是dd,则输出只显示ddbb,不显示dddd;以下类似
[root@node2 Desktop]# cat file3.txt
1 AAAA
2 aaaa
3 aaaa
4 aaaa
5 aabb
6 ddbb
7 dddd
8 cccc
9 dddd
10 dddd
11 bbbb
12 bbbb
[root@node2 Desktop]# uniq -f 1 file3.txt
1 AAAA
2 aaaa
5 aabb
6 ddbb
7 dddd
8 cccc
9 dddd
11 bbbb
[root@node2 Desktop]#
去重说明:-f参数是按空格分隔字段,按照-f指定的字段数后对比去重,如上文件,第一列(字段)是行值,如果都考虑第一列(字段),那么不会有重复的行;去掉第一列(字段),那么9行和10行都是dddd,去重后仅显示9行的dddd
[root@node2 Desktop]# uniq -c file1.txt | sort -nr
3 aaaa
2 bbbb
1 dddd
1 cccc
1 AAAA
[root@node2 Desktop]#
去重说明:基于4.2用例结果,使用sort -nr以字符数值及倒叙输出,得到从大到小排序输出