16boke - 一路博客

linux命令之uniq命令

一、定义

Linux命令uniq的作用是过滤重复部分显示文件内容,这个命令读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该命令加工后的结果写到输出文件中。输入文件和输出文件必须不同。如果输入文件用“- ”表示,则从标准输入读取。

二、帮助文档

输入uniq --help

[root@atlas ~]# uniq --help

用法:uniq [选项]... [文件]

从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出。

不附加任何选项时匹配行将在首次出现处被合并。

长选项必须使用的参数对于短选项时也是必需使用的。

-c, --count 在每行前加上表示相应行目出现次数的前缀编号

-d, --repeated 只输出重复的行

-D, --all-repeated[=delimit-method 显示所有重复的行

delimit-method={none(default),prepend,separate}

以空行为界限

-f, --skip-fields=N 比较时跳过前N 列

-i, --ignore-case 在比较的时候不区分大小写

-s, --skip-chars=N 比较时跳过前N 个字符

-u, --unique 只显示唯一的行

-z, --zero-terminated 使用'\0'作为行结束符,而不是新换行

-w, --check-chars=N 对每行第N 个字符以后的内容不作对照

--help 显示此帮助信息并退出

--version 显示版本信息并退出

若域中为先空字符(通常包括空格以及制表符),然后非空字符,域中字符前的空字符将被跳过。

提示:uniq 不会检查重复的行,除非它们是相邻的行。

如果您想先对输入排序,使用没有uniq 的"sort -u"。

二、实例

素材[root@atlas ~]# cat test
boy took bat home
boy took bat home
girl took bat home
boy took bat home
boy took bat home
dog brought hat home
dog brought hat home
dog brought hat home
uniq命令不加任何参数,仅显示连续重复的行一次[root@atlas ~]# uniq test
boy took bat home
girl took bat home
boy took bat home
dog brought hat home
-c 参数显示文件中每行连续出现的次数[root@atlas ~]# uniq -c test
     2 boy took bat home
     1 girl took bat home
     2 boy took bat home
     3 dog brought hat home
排序后再显示[root@atlas ~]# cat test|sort |uniq -c
     4 boy took bat home
     3 dog brought hat home
     1 girl took bat home
-d选项仅显示文件中连续重复出现的行。[root@atlas ~]# uniq -d test
boy took bat home
boy took bat home
dog brought hat home
-u选项显示文件中没有连续出现的行,不重复的行[root@atlas ~]# uniq -u test
girl took bat home


uniq