继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

linux uniq 命令整理

慕码人8056858
关注TA
已关注
手记 1247
粉丝 350
获赞 1323

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


打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP