uniq linux下去除重复行命令
一,uniq干什么用的
文本中的重复行,基本上不是我们所要的,所以就要去除掉。linux下有其他命令可以去除重复行,但是我觉得uniq还是比较方便的一个。使用uniq的时候要注意以下二点
1,对文本操作时,它一般会和sort命令进行组合使用,因为uniq 不会检查重复的行,除非它们是相邻的行。如果您想先对输入排序,使用sort -u。
2,对文本操作时,若域中为先空字符(通常包括空格以及制表符),然后非空字符,域中字符前的空字符将被跳过
二,uniq参数说明
- [zhangy@BlackGhost ~]$ uniq --help
- 用法:uniq [选项]... [文件]
- 从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出。
- 不附加任何选项时匹配行将在首次出现处被合并。
- 长选项必须使用的参数对于短选项时也是必需使用的。
- -c, --count //在每行前加上表示相应行目出现次数的前缀编号
- -d, --repeated //只输出重复的行
- -D, --all-repeated //只输出重复的行,不过有几行输出几行
- -f, --skip-fields=N //-f 忽略的段数,-f 1 忽略第一段
- -i, --ignore-case //不区分大小写
- -s, --skip-chars=N //根-f有点像,不过-s是忽略,后面多少个字符 -s 5就忽略后面5个字符
- -u, --unique //去除重复的后,全部显示出来,根mysql的distinct功能上有点像
- -z, --zero-terminated end lines with 0 byte, not newline
- -w, --check-chars=N //对每行第N 个字符以后的内容不作对照
- --help //显示此帮助信息并退出
- --version //显示版本信息并退出
其中-z不知道有什么用
三,测试文本文件uniqtest
- this is a test
- this is a test
- this is a test
- i am tank
- i love tank
- i love tank
- this is a test
- whom have a try
- WhoM have a try
- you have a try
- i want to abroad
- those are good men
- we are good men
四,实例详解
- [zhangy@BlackGhost mytest]$ uniq -c uniqtest
- 3 this is a test
- 1 i am tank
- 2 i love tank
- 1 this is a test //和第一行是重复的
- 1 whom have a try
- 1 WhoM have a try
- 1 you have a try
- 1 i want to abroad
- 1 those are good men
- 1 we are good men
从上例子中我们可以看出,uniq的一个特性,检查重复行的时候,只会检查相邻的行。重复数据,肯定有很多不是相邻在一起的。
- [zhangy@BlackGhost mytest]$ sort uniqtest |uniq -c
- 1 WhoM have a try
- 1 i am tank
- 2 i love tank
- 1 i want to abroad
- 4 this is a test
- 1 those are good men
- 1 we are good men
- 1 whom have a try
- 1 you have a try
这样就可以解决上个例子中提到的问题
- [zhangy@BlackGhost mytest]$ uniq -d -c uniqtest
- 3 this is a test
- 2 i love tank
uniq -d 只显示重复的行
- [zhangy@BlackGhost mytest]$ uniq -D uniqtest
- this is a test
- this is a test
- this is a test
- i love tank
- i love tank
uniq -D 只显示重复的行,并且把重复几行都显示出来。他不能和-c一起使用
- [zhangy@BlackGhost mytest]$ uniq -f 1 -c uniqtest
- 3 this is a test
- 1 i am tank
- 2 i love tank
- 1 this is a test
- 2 whom have a try
- 1 you have a try
- 1 i want to abroad
- 2 those are good men //只有一行,显示二行
在这里those只有一行,显示的却是重复了,这是因为,-f 1 忽略了第一列,检查重复从第二字段开始的。
- [zhangy@BlackGhost mytest]$ uniq -i -c uniqtest
- 3 this is a test
- 1 i am tank
- 2 i love tank
- 1 this is a test
- 2 whom have a try //一个大写,一个小写
- 1 you have a try
- 1 i want to abroad
- 1 those are good men
- 1 we are good men
检查的时候,不区分大小写
- [zhangy@BlackGhost mytest]$ uniq -s 4 -c uniqtest
- 3 this is a test
- 1 i am tank
- 2 i love tank
- 1 this is a test
- 3 whom have a try //根上一个例子有什么不同
- 1 i want to abroad
- 1 those are good men
- 1 we are good men
检查的时候,不考虑前4个字符,这样whom have a try 就和 you have a try 就一样了。
- [zhangy@BlackGhost mytest]$ uniq -u uniqtest
- i am tank
- this is a test
- whom have a try
- WhoM have a try
- you have a try
- i want to abroad
- those are good men
- we are good men
去重复的项,然后全部显示出来
- [zhangy@BlackGhost mytest]$ uniq -w 2 -c uniqtest
- 3 this is a test
- 3 i am tank
- 1 this is a test
- 1 whom have a try
- 1 WhoM have a try
- 1 you have a try
- 1 i want to abroad
- 1 those are good men
- 1 we are good men
对每行第2个字符以后的内容不作检查,所以i am tank 根 i love tank就一样了。
uniq linux下去除重复行命令的更多相关文章
- 实例详细说明linux下去除重复行命令uniq
地址:http://blog.51yip.com/shell/1022.html 一,uniq干什么用的 文本中的重复行,基本上不是我们所要的,所以就要去除掉.linux下有其他命令可以去除重复行,但 ...
- linux 下删除重复行-- uniq 与 awk
$ cat file liw liw liw hdsui mdksjd liw $ cat file | uniq -u # 只删除相邻的,不保留重复行 hdsui mdksjd liw $ cat ...
- Linux合并文件、去除重复行的命令
Linux合并文件命令: awk '{printf("%s\n",$0)}' YQ-*101?.txt > 123.txt linux去除重复行命令:cat YQ-10 ...
- uniq 去除重复行
1.命令功能 uniq可以输出或忽略文件中的重复行,经常需要使用sort先对文件进行排序,然后使用uniq去重并计数. 2.语法格式 uniq option input uniq 选项 ...
- linux shell脚本查找重复行/查找非重复行/去除重复行/重复行统计
转自:http://blog.sina.com.cn/s/blog_6797a6700101pdm7.html 去除重复行 sort file |uniq 查找非重复行 sort file |uniq ...
- linux下使用无线网卡的命令行方法(wifi,iwconfig)
原文地址:linux下使用无线网卡的命令行方法(wifi,iwconfig) 作者:andyhzw (1)首先关闭开发板的有线网卡 [root@FriendlyARM /]# ifconfig eth ...
- Linux下一款可以使用命令行的pdf阅读器
Zathura是linux下一款用命令行控制打pdf阅读器,并且基本打使用方法和vim很相似.对于喜欢键盘操作的用户来说的确是一个不错的选择. ubuntu下的安装命令: sudo apt-get i ...
- linux下如何使用sftp命令【转】
linux下如何使用sftp命令 from: http://www.cnblogs.com/chen1987lei/archive/2010/11/26/1888391.html sftp 是一个 ...
- linux下mysql操作的命令
最近在学习mysql,还是只菜鸟,找到下面篇文章对初学者挺有用的,所以共享下 1.linux下启动mysql的命令: mysqladmin start /ect/init.d/mysql star ...
随机推荐
- [C#]获取一年中是第几个星期
关键代码: /// <summary> /// 获取日期是一年中第几个星期 /// </summary> /// <param name="date" ...
- javascript获取url中对应参数的方法
利用正则表达式和location.search方法,可以简便的获取到对应的参数: function getQueryString(name) {var reg = new RegExp(" ...
- Linux文件保护禁止修改、删除、移动文件等,使用chattr +i保护
不让用户修改.删除文件等,使用 chattr保护 chattr命令的用法:chattr [ -RV ] [ -v version ] [ mode ] files… 最关键的是在[mode]部分,[m ...
- Python环境搭建(windows)
Python环境搭建(windows) Python简介 Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/),是一种面向对象.直译式计算机编程语言,具有近二十年的发展历史,成 ...
- SQL日期(转)
通常,你需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天.你们大部分人大概都知道怎样把日期进行分割 (年.月.日等),然后仅仅用分割出来的年.月.日等放在几个 ...
- 【IT历史】SP和CP
1.什么是SP?SP是英文Service Provider的缩写,中文翻译为服务提供商,通常是指在移动网内运营增值业务的社会合作单位.它们建立与移动网络建立相连的服务平台,为手机用户提供一系列信息服务 ...
- js构造函数传参
1.直接传参并用this关键字初始化属性 function Person(name,age,learn){ this.name = name; this.age = age; this.learn = ...
- [BZOJ 3774] 最优选择 【最小割】
题目链接:BZOJ - 3774 题目分析 此题与“文理分科”那道题目有些类似.都是使用最小割来求解,先加上可能获得的权值,在减掉必须舍弃的权值(最小割). 文理分科是规定每个人和 S 连就是选文,和 ...
- 关于PIL库的一些概念
关于PIL库的一些概念 pil能处理的图片类型pil可以处理光栅图片(像素数据组成的的块). 通道一个图片可以包含一到多个数据通道,如果这些通道具有相同的维数和深度,Pil允许将这些通道进行叠加 模式 ...
- loadrunner throughput(吞吐量)理解
转自http://www.51testing.com/html/29/n-110129.html Throughput翻译为吞吐量,按照常规理解网络吞吐量表示在单位时间内通过网卡数据量之和,其中即 ...