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不唯一
使用- 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.
使用- 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使用:
相关文章
- Shell中的$0、$1、$2的含义
- Linux Shell脚本自动化编程实战- shell内置命令 break、continue
- Linux shell编程 字符串拼接
- linux shell 脚本攻略学习20--awk命令入门详解
- Linux Shell脚本自动化编程实战-shell变量(二)
- linux下的shell运算(加、减、乘、除)
- windows下编写shell在Linux运行时格式问题 r 错误
- Shell编程中Shift的用法
- linux shell date的用法
- 014-交互式Shell和shell脚本获取进程 pid
- shell编程中的 三种结构: 条件if/选择结构case/循环for/while/until等结构 和 函数的用法
- 18.第六章 Shell脚本编程基础入门 -- 编程基础和shell脚本语言的基本用法(一)
- shell编程语法
- MYSQL提权之反弹SHELL——数据库提权属于webshell到管理员的纵向提权,本质还是利用udf提权,无非是在mysql自定义函数中使用了反弹shell而已
- centos下安装mongodb 通过shell脚本
- shell笔记
- shell脚本学习:weblogic中间件domain域实现自动化备份
- S27.shell脚本每日一练
- Shell脚本经典案例:探测批量主机是否存活