linux常用命令介绍 04 篇——uniq命令使用介绍(Linux重复数据的统计处理)
- 1. uniq 使用语法
- 2. sort 简单效果
- 3. uniq 使用例子
- 3.1 不加任何选项
- 3.1.1 不用 sort 效果
- 3.1.2 uniq 结合 sort 一起使用
- 3.2 使用选项例子
- 3.2.1 去重打印(或打印不重复行)
- 3.2.2 重复统计问题(`-c`选项)
1. uniq 使用语法
-
uniq 常用于重复数据的处理
-
语法:
uniq 文件名 uniq [选项] 文件名
-
常见选项:
-D :仅显示重复的行,且打印重复行的所有行 -d :仅显示重复的行,且每个重复的行只打印一次 -u :只打印不重复的行
-
使用注意事项:一般使用时,结合 sort 一起使用,
sort
用来排序,结合使用的效果是:主要处理文档中不相邻的重复行。当然,如果没有不相邻的重复行,可以 uniq 单独使用,但是为了避免结果出现不准确性,尽量结合起来使用。下面案例会让你体会到
sort
的重要性,往下看吧……
2. sort 简单效果
- sort 实现排序效果,即把相同的行排在一起,不多说,简单看一个效果即可,如下:
sort bb.txt
3. uniq 使用例子
3.1 不加任何选项
3.1.1 不用 sort 效果
- uniq 不加任何选项的时候,是直接默认去重打印,但是只针对相邻的重复行,不相邻的重复行失效,如下:
uniq bb.txt
3.1.2 uniq 结合 sort 一起使用
- 再看一下结合
sort
使用的效果,先排序后去重,实现了重复内容的真正去重,效果如下sort bb.txt |uniq cat bb.txt | sort| uniq
3.2 使用选项例子
- 下面的例子也是要结合 sort 同时使用的,我们只演示第一个
-D
选项后面的就直接都加 sort 了。
3.2.1 去重打印(或打印不重复行)
-D
:仅显示重复的行,且打印重复行的所有行,即:重复多少次打印多少行- 看图说话,一看就,示例如下:
uniq -D bb.txt sort bb.txt | uniq -D
- 看图说话,一看就,示例如下:
-d
:仅显示重复的行,且每个重复的行只打印一次- 示例如下:
sort bb.txt | uniq -d
- 示例如下:
-u
:只打印不重复的行- 示例如下:
sort bb.txt | uniq -u
- 示例如下:
3.2.2 重复统计问题(-c
选项)
- 跟上面的一样,还是要结合
sort
一起使用的- 先看第一个直接统计的效果:
cat bb.txt | sort | uniq -c
上面的统计结果没问题,但是排序稍微有点不舒服,那继续优化一下吧…… - 再看一个将统计后数字按大小排序的结果:
根据上面我们对 sort 的理解,将上面的结果再次使用一下(使用sort -r
还能降序),就完美达到了我们的要求,如下:cat bb.txt | sort | uniq -c | sort cat bb.txt | sort | uniq -c | sort -r
- 你还可以再用 awk 再简单处理一下,如下:
cat bb.txt | sort | uniq -c | sort -r | awk '{print $2,$1}' cat bb.txt | sort | uniq -c | sort -r | awk '{print $1,$2}'
- 先看第一个直接统计的效果:
- 当然,你也可以使用 awk 工具写个脚本跑一下,今天先到这里,这个后续再说,自己可以搞一搞