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 ...
随机推荐
- QtSQL学习笔记(3)- 执行SQL语句
QSqlQuery类提供了一个用于执行SQL语句和浏览查询的结果集的接口. QSqlQueryModel和QSqlTableModel类提供了一个用于访问数据库的高级接口,这将在下一节介绍.如果你不熟 ...
- 纯原生js移动端城市选择插件
接着上一篇纯js移动端日期选择插件,话说今天同事又来咨询省市县联动的效果在移动端中如何实现,还是老样子,百度上一搜,诶~又全是基于jquery.zepto的,更加可恨的是大多数都是PC版的,三个sel ...
- Visual C++ 对话框增加菜单栏
1.添加菜单资源 在resourceview视图中右击选择insert,添加一个菜单资源IDR_MENU1,同时设定好响应的菜单项,例 如: 菜单1 ...
- POJ 3254 压缩状态DP
题意:一个矩形网格,可以填0或1, 但有些位置什么数都不能填,要求相邻两个不同时为1,有多少种填法.矩形大小最大 12*12. 压缩状态DP大多有一个可行的state的范围,先求出这个state范围, ...
- to config RBS/RBLOB in sharepoint
http://technet.microsoft.com/en-us/library/gg316768(v=sql.105).aspx http://technet.microsoft.com/en- ...
- online web design tool
https://webflow.com/ http://css-tricks.com/snippets/ https://www.fluidui.com/demos
- Delphi XE5 android 图解为Android应用制作签名
本文摘自 http://redboy136.blog.163.com/blog/static/107188432201381872820132 要发布android应用,必须做签名的.看一下具体的操作 ...
- spring framework 各版本源码下载地址
现在spring的源码下载地址真是不好找,这次终于找到了.记录一下,以帮助需要的朋友. https://github.com/spring-projects/spring-framework/tags ...
- unity 嵌入 百度分享 与 游戏内购物 iap
原地址:http://blog.csdn.net/u012085988/article/details/18268869 最近老板让在unity项目里实现分享与内购功能,还要ios和android两个 ...
- 练习--LINUX进程间通信之消息队列MSG
https://www.ibm.com/developerworks/cn/linux/l-ipc/part3/ 继续坚持,或许不能深刻理解,但至少要保证有印象. ~~~~~~~~~~~~~~ 消息队 ...