linux uniq命令整理

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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值