linux uniq 命令整理

无论是工作中使用还是应付各种面试,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整理完了,欢迎大牛指教

你可能感兴趣的:(linux uniq 命令整理)