uniq命令总结

uniq:通过消除重复内容,从给定输入中(stdin或命令行参数文件)找到单一的行。它也可以用户找出输入中出现的重复行。uniq只能用于排过序的数据输入,因此,uniq要么使用管道,要么将排序过的文件作为输入,并总是以这种方式与sort命令结合起来使用。


[root@oldboy ~]# man uniq
UNIQ(1)                          User Commands                         UNIQ(1)

NAME
       uniq - report or omit repeated lines

SYNOPSIS
       uniq [OPTION]... [INPUT [OUTPUT]]

DESCRIPTION
       Filter  adjacent matching lines from INPUT (or standard input), writing
       to OUTPUT (or standard output).

       With no options, matching lines are merged to the first occurrence.

       Mandatory arguments to long options are  mandatory  for  short  options
       too.

       -c, --count
              prefix lines by the number of occurrences

       -d, --repeated
              only print duplicate lines

       -D, --all-repeated[=delimit-method]
              print              all              duplicate              lines
              delimit-method={none(default),prepend,separate}  Delimiting   is
              done with blank lines.

       -f, --skip-fields=N
              avoid comparing the first N fields

       -i, --ignore-case
              ignore differences in case when comparing

       -s, --skip-chars=N
              avoid comparing the first N characters

       -u, --unique
              only print unique lines

       -z, --zero-terminated
              end lines with 0 byte, not newline

       -w, --check-chars=N
              compare no more than N characters in lines

       --help display this help and exit

       --version
              output version information and exit

       A field is a run of blanks (usually spaces and/or TABs), then non-blank
       characters.  Fields are skipped before chars.

       Note: ’uniq’ does not detect repeated lines unless they  are  adjacent.
       You  may want to sort the input first, or use ‘sort -u’ without ‘uniq’.
       Also, comparisons honor the rules specified by ‘LC_COLLATE’.

1、-c参数:统计行出现的次数,并将次数放在行首。

[root@oldboy ~]# cat test.txt 
test
liyao
oldboy
test
just
oldboy
test
[root@oldboy ~]# uniq -c test.txt 
      1 test
      1 liyao
      1 oldboy
      1 test
      1 just
      1 oldboy
      1 test
[root@oldboy ~]# sort test.txt|uniq -c
      1 just
      1 liyao
      2 oldboy
      3 test
[root@oldboy ~]#

通过对比可以发现,没有排序的输入,只是在每行前面显示前缀数字而已。


2、-d参数:只显示重复的行。

[root@oldboy ~]# sort test.txt |uniq -d
oldboy
test
[root@oldboy ~]#

同样,对于无序输入,uniq达不到你想要的结果

[root@oldboy ~]# uniq -d test.txt 
[root@oldboy ~]#


3、-u参数:只显示唯一的行。

[root@oldboy ~]# uniq -u test.txt 
test
liyao
oldboy
test
just
oldboy
test
[root@oldboy ~]# sort test.txt |uniq -u
just
liyao
[root@oldboy ~]#


uniq较常用的参数主要是这三个参数,熟练掌握这三个参数即可。其他,可以再做了解。

你可能感兴趣的:(学习总结,常用参数,uniq命令)