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 ...
随机推荐
- Yii 通过widget小物件生成添加表单
通过widget小物件创建添加商品的表单 视图里,表单以endWidget();?>结束 最终效果: 把表单提交过来的信息保存到数据库中去. 补充要点: 密码表单: <?php echo ...
- Linux – RedHat7 / CentOS 7 忘记root密码修改
1.(a) 开机出现grub boot loader 开机选项菜单时,立即点击键盘任意鍵,boot loader 会暂停. (b) 按下’e’,编辑选项菜单(c) 移动上下鍵至linux16 核心命令 ...
- Android开发系列之Android项目的目录结构
今天开始正式学习Android开发的种种细节,首先从最基本的概念和操作学起. 首先看一下Android项目的目录结构. 这是我随便建立的一个test项目,我们重点关注一下几个方面的内容: 1.src目 ...
- PHP 透明水印生成代码
PHP 透明水印生成代码,需要的朋友可以参考下. 复制代码代码如下: <?php /* * Created on 2010-10-27 * BY QQ542900563 * Copyri ...
- 可以自动安装mysql数据库的一个shell脚本
发布:thatboy 来源:脚本学堂 [大 中 小] 分享一例shell脚本,可以实现mysql数据库的自动安装,脚本写的不错,无论是用来学习,还是生产环境中应用,都是不错的,有需要的朋友 ...
- PHP程序员的技术成长规划(送给迷茫的你)
按照了解的很多PHP/LNMP程序员的发展轨迹,结合个人经验体会,抽象出很多程序员对未来的迷漫,特别对技术学习的盲目和慌乱,简单梳理了这个每个阶段PHP程序员的技术要求,来帮助很多PHP程序做对照设定 ...
- 常用面试sql语句
1.编写一条sql语句,要修改一个字段的俩个值,比如把字段sex中的男改为女,女改为男. update m set m=(case when m='男' then '女' else '男' end) ...
- Java使用memcached
1.加载commons-pool-1.5.6.jar.java_memcached-release_2.6.6.jar.slf4j-api-1.6.1.jar.slf4j-simple-1.6.1.j ...
- 制作精灵(UI Sprite)
怎样判断是否应该使用精灵 在一套UI中,精灵是一种非常常见的元件.当制作UI时,如果需要显示一张图片,需要先判断这个图片是否应该制作到图集里去,然后用精灵的方式去使用它,一般来说,可以遵循以下规律. ...
- C++练习题
1. 用面向对象的程序描述员工拥有的股票,股票有公司,价格,数量属性,且拥有展现基本数据,更新价格,买进,卖出操作,并具有比较两个股票对象股值大小的比较方法. 2. 用面向对象的程序描述一个栈的操作, ...