无论是工作中使用还是应付各种面试,linux uniq 都是必须要掌握的 linux 基本命令之一。uniq 一般和 sort 一起用,用来对排序好的内容去重
uniq 对排序好的内容进行去重
语法:
uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]
选项:
-c或--count 在每列旁边显示该行重复出现的次数
-d或--repeated 仅显示重复出现的行
-f<栏位>或--skip-fields=<栏位> 比较时跳过前n列,从n+1列开始比较
-s<字符位置>或--skip-chars=<字符位置>比较时跳过前n个字符,从n+1个字符开始比较
-u或--unique 仅显示出现一次的行
-w<字符位置>或--check-chars=<字符位置>对每行第n个字符以后的内容不作对照
这里也不多说,就说一句,uniq 是对排序好的内容去重,一般和 sort 同时使用,好,直接上例子,先展示下原始数据
sort -k 2,2 sort.log
e bsd 1000 600 4M
c Debian 600 200 8K
b linux 1000 200 5K
a mac 2000 500 2K
f SUSE 4000 300 6M
c win7 2000 100 7G
d winxp 4000 300 3G
d winxp 500 300 3G
g winxp 500 300 3G
g winxp 500 300 3G
为了方便观看,我将原始数据和去重后的数据都展示出来,左边为原始数据,右边为去重后的数据
1、默认去重
sort -k 2,2 sort.log|uniq
e bsd 1000 600 4M e bsd 1000 600 4M
c Debian 600 200 8K c Debian 600 200 8K
b linux 1000 200 5K b linux 1000 200 5K
a mac 2000 500 2K a mac 2000 500 2K
f SUSE 4000 300 6M f SUSE 4000 300 6M
c win7 2000 100 7G c win7 2000 100 7G
d winxp 4000 300 3G d winxp 4000 300 3G
d winxp 500 300 3G d winxp 500 300 3G
g winxp 500 300 3G g winxp 500 300 3G
g winxp 500 300 3G
2、比较时跳过前n列,从n+1列开始比较
sort -k 2,2 sort.log|uniq -f 3
e bsd 1000 600 4M e bsd 1000 600 4M
c Debian 600 200 8K c Debian 600 200 8K
b linux 1000 200 5K b linux 1000 200 5K
a mac 2000 500 2K a mac 2000 500 2K
f SUSE 4000 300 6M f SUSE 4000 300 6M
c win7 2000 100 7G c win7 2000 100 7G
d winxp 4000 300 3G d winxp 4000 300 3G
d winxp 500 300 3G
g winxp 500 300 3G
g winxp 500 300 3G
3、对每行第n个字符以后的内容不作对照,忽略n以后的字符
sort -k 2,2 sort.log|uniq -w 1
e bsd 1000 600 4M e bsd 1000 600 4M
c Debian 600 200 8K c Debian 600 200 8K
b linux 1000 200 5K b linux 1000 200 5K
a mac 2000 500 2K a mac 2000 500 2K
f SUSE 4000 300 6M f SUSE 4000 300 6M
c win7 2000 100 7G c win7 2000 100 7G
d winxp 4000 300 3G d winxp 4000 300 3G
d winxp 500 300 3G g winxp 500 300 3G
g winxp 500 300 3G
g winxp 500 300 3G
4、比较时跳过前n个字符,从n+1个字符开始比较
sort -k 2,2 sort.log|uniq -s 1
e bsd 1000 600 4M e bsd 1000 600 4M
c Debian 600 200 8K c Debian 600 200 8K
b linux 1000 200 5K b linux 1000 200 5K
a mac 2000 500 2K a mac 2000 500 2K
f SUSE 4000 300 6M f SUSE 4000 300 6M
c win7 2000 100 7G c win7 2000 100 7G
d winxp 4000 300 3G d winxp 4000 300 3G
d winxp 500 300 3G d winxp 500 300 3G
g winxp 500 300 3G
g winxp 500 300 3G
5、在每列旁边显示该行重复出现的次数,并仅显示出现一次的行
sort -k 2,2 sort.log|uniq -c -u
e bsd 1000 600 4M 1 e bsd 1000 600 4M
c Debian 600 200 8K 1 c Debian 600 200 8K
b linux 1000 200 5K 1 b linux 1000 200 5K
a mac 2000 500 2K 1 a mac 2000 500 2K
f SUSE 4000 300 6M 1 f SUSE 4000 300 6M
c win7 2000 100 7G 1 c win7 2000 100 7G
d winxp 4000 300 3G 1 d winxp 4000 300 3G
d winxp 500 300 3G 1 d winxp 500 300 3G
g winxp 500 300 3G
g winxp 500 300 3G
6、在每列旁边显示该行重复出现的次数,并仅显示重复出现的行
sort -k 2,2 sort.log|uniq -d -c
e bsd 1000 600 4M 2 g winxp 500 300 3G
c Debian 600 200 8K
b linux 1000 200 5K
a mac 2000 500 2K
f SUSE 4000 300 6M
c win7 2000 100 7G
d winxp 4000 300 3G
d winxp 500 300 3G
g winxp 500 300 3G
g winxp 500 300 3G
uniq整理完了,欢迎大牛指教