uniq用法(shell)

简介:

uniq用法
u n i q用来从一个文本文件中去除或禁止重复行。一般u n i q假定文件已分类,并且结果正确。
我们并不强制要求这样做,如果愿意,可以使用任何非排序文本,甚至是无规律行。
可以认为u n i q有点像s o r t命令中唯一性选项。对,在某种程度上讲正是如此,但两者有一个重要区别。s o r t的唯一性选项去除所有重复行,而u n i q命令并不这样做。重复行是什么?在u n i q里意即持续不断重复出现的行,中间不夹杂任何其他文本,现举例如下:

[Copy to clipboard] [ - ]
CODE:
[sam@chenwy sam]$ cat myfile.txt
May Day
May Day
May Day
Going DOwn
May Day
May Day.
May Day

u n i q将前三个May Day看作重复副本,但是因为第4行有不同的文本,故并不认为第五行持续的May Day为其副本。u n i q将保留这一行。
命令一般格式:

[Copy to clipboard] [ - ]
CODE:
$uniq -u d c -f input-file out-file

QUOTE:
其选项含义:
-u 只显示不重复行。
-d 只显示有重复数据行,每种重复行只显示其中一行
-c 打印每一重复行出现次数。
-f n为数字,前n个域被忽略。
一些系统不识别- f选项,这时替代使用- n。

创建文件m y f i l e . t x t,在此文件上运行u n i q命令。

[Copy to clipboard] [ - ]
CODE:
[sam@chenwy sam]$ uniq myfile.txt
May Day
Going DOwn
May Day
May Day.
May Day

注意第5行保留下来,其文本为最后一行May Day。如果运行sort -u,将只返回May Day和Going Down。

连续重复出现
使用- c选项显示行数,即每个重复行数目。本例中,行May Day重复出现三次

[Copy to clipboard] [ - ]
CODE:
[sam@chenwy sam]$ uniq -c myfile.txt

  3 May Day
  1 Going DOwn
  1 May Day
  1 May Day.
  1 May Day
  1. 不唯一
    使用- d显示重复出现的不唯一行:

[Copy to clipboard] [ - ]
CODE:
[sam@chenwy sam]$ uniq -d myfile.txt
May Day

[Copy to clipboard] [ - ]
CODE:
[sam@chenwy sam]$ uniq -u myfile.txt
Going DOwn
May Day
May Day.

  1. 对特定域进行测试
    使用- n只测试一行一部分的唯一性。例如- 5意即测试第5域后各域唯一性。域从1开始记数。

如果忽略第1域,只测试第2域唯一性,使用- n2,下述文件包含一组数据,其中第2域代表组代码。

[Copy to clipboard] [ - ]
CODE:
[sam@chenwy sam]$ cat parts.txt
AK123 OPP Y13
DK122 OPP Y24
EK999 OPP M2

[Copy to clipboard] [ - ]
CODE:
[sam@chenwy sam]$ cat parts.txt
AK123 33 46 6u OPP ty yu
DK122 5h 67 y8 OPP ty yu
EK999 56 56 78 IIY ty yu

运行u n i q,将返回所有行。因为这个文件每一行都不同。

[Copy to clipboard] [ - ]
CODE:
[sam@chenwy sam]$ cat parts.txt
1 AK123 33 46 6u OPP ty yu
1 DK122 5h 67 y8 OPP ty yu
1 EK999 56 56 78 IIY ty yu

如果指定测试在第4域后,结果就会不同。u n i q会比较三个相同的O PP,因此将返回一行。

[Copy to clipboard] [ - ]
CODE:
[sam@chenwy sam]$ uniq -f4 -c parts.txt

  2 AK123 33 46 6u OPP ty yu
  1 EK999 56 56 78 IIY ty yu

指定第5域,即从第6域开始比较:

[Copy to clipboard] [ - ]
CODE:
[sam@chenwy sam]$ uniq -f5 -c parts.txt

  3 AK123 33 46 6u OPP ty yu

如果‘- f’返回错误,替代-n使用:

目录
相关文章
|
21天前
|
存储 Shell Linux
【Shell 命令集合 文档编辑】Linux 删除连续重复的行 uniq 命令使用指南
【Shell 命令集合 文档编辑】Linux 删除连续重复的行 uniq 命令使用指南
51 0
|
Shell
Shell 脚本中常用命令——Sort、Uniq、Cut、Seq
Shell 脚本中常用命令——Sort、Uniq、Cut、Seq
509 0
Shell 脚本中常用命令——Sort、Uniq、Cut、Seq