为了账号安全,请及时绑定邮箱和手机立即绑定

linux uniq 命令整理

标签:
Linux

无论是工作中使用还是应付各种面试,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



作者:smoke_zl
链接:https://www.jianshu.com/p/b37fc3656700


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消