linux之去重uniq命令详解

uniq是对文本文件进行行去去重的工具。

  • 以行为单位,进行行与行之间的字符串比较并进行去重
  • 只能对有序的文本行进行有效去重,所以常与sort命令结合使用
参数 解释
-c     统计行出现的次数
-d     只显示重复的行并且去重
-u     只显示唯一的行
-i     忽略字母大小写
-f     忽略前N个字段(字段间用空白字符分隔)

1.与sort结合使用

准备文件

[root@linuxforliuhj test]# cat hello.sh
hello this is linux
be better
be better
i am lhj
hello this is linux
i am lhj
i am lhj
be better
i am lhj
have a nice day
have a nice day
hello this is linux
hello this is linux
have a nice day
zzzzzzzzzzzzzz
dddddddd
gggggggggggggggggggg
[root@linuxforliuhj test]# 

【1】单独使用uniq命令

[root@linuxforliuhj test]# uniq hello.sh
hello this is linux
be better
i am lhj
hello this is linux
i am lhj
be better
i am lhj
have a nice day
hello this is linux
have a nice day
zzzzzzzzzzzzzz
dddddddd
gggggggggggggggggggg
[root@linuxforliuhj test]#

可以看出单独使用uniq命令时只对相邻重复行进行去重,无法进行有效去重

【2】与sort结合使用

[root@linuxforliuhj test]# sort hello.sh | uniq
be better
dddddddd
gggggggggggggggggggg
have a nice day
hello this is linux
i am lhj
zzzzzzzzzzzzzz
[root@linuxforliuhj test]# 

先排序使重复的行相邻,然后使用uniq可以有效去重

【3】uniq支持管道符

[root@linuxforliuhj test]# cat hello.sh | sort | uniq
be better
dddddddd
gggggggggggggggggggg
have a nice day
hello this is linux
i am lhj
zzzzzzzzzzzzzz
[root@linuxforliuhj test]# 

uniq支持管道符

2.统计出现的次数,使用-c参数

使用-c,–count可以统计重复行出现的次数

[root@linuxforliuhj test]# cat hello.sh | sort | uniq -c3 be better1 dddddddd1 gggggggggggggggggggg3 have a nice day4 hello this is linux4 i am lhj1 zzzzzzzzzzzzzz
[root@linuxforliuhj test]#

3.只显示重复的行并且去重,使用-d参数

使用-d,–repeated只显示重复的行并且重复的行只显示一次

[root@linuxforliuhj test]# cat hello.sh | sort | uniq -dc3 be better3 have a nice day4 hello this is linux4 i am lhj
[root@linuxforliuhj test]# 

可以看到末尾的三行不重复的行没有显示,将重复的行进行去重后显示

3.只显示唯一的行,使用-u参数

[root@linuxforliuhj test]# cat hello.sh | sort | uniq -u
dddddddd
gggggggggggggggggggg
zzzzzzzzzzzzzz
[root@linuxforliuhj test]# 

只有末尾三行是唯一的,所以只显示末尾的三行文本

4.忽略字母大小写,使用-i参数

[root@linuxforliuhj test]# cat test.txt
I am LHJ
i am lhj
HELLO this Is Zhang
hello this is zhang
[root@linuxforliuhj test]# cat test.txt | sort | uniq -i
hello this is zhang
i am lhj
[root@linuxforliuhj test]#

5.忽略前N个字段进行去重,使用-f参数

[root@linuxforliuhj test]# cat test.txt
1 I am LHJ
2 i am lhj
3 HELLO this Is Zhang
4 hello this is zhang
[root@linuxforliuhj test]# cat test.txt | sort | uniq -i -f 1
1 I am LHJ
3 HELLO this Is Zhang
[root@linuxforliuhj test]# 

test.txt文件中每一行之前有行号,无法使用sort和uniq进行去重,可以使用-f参数忽略每一行的第一个字段,这样就可以忽略每一行之前的行号,对每一行之后的内容进行去重处理。

注意:字段之间必须是空白字符(空格或者tap键均属于空白字符)分隔,使用其他字符无法识别
对于这种情况也可以使用awk命令工具进行处理去除第一列的行号,然后通过管道符丢给sort和uniq命令处理,后续会继续更新awk等重要的文本处理工具。

感谢大佬OH!!!

Linux 去重uniq命令详解相关推荐

  1. linux之去重uniq命令详解

    linux之去重uniq命令详解 uniq是对文本文件进行行去去重的工具. 以行为单位,进行行与行之间的字符串比较并进行去重 只能对有序的文本行进行有效去重,所以常与sort命令结合使用 参数 解释 ...

  2. Linux下uniq命令详解及C/C++代码实现

    Linux uniq 命令用于从文件中删除所有重复的行. 此外,它还可用于显示任何单词的计数.仅重复行.忽略字符以及比较特定字段. 它是 Linux 系统中最常用的命令之一. uniq 命令使用 Un ...

  3. linux之uniq 命令详解

    Linux uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用. uniq 可检查文本文件中重复出现的行列. 语法: uniq [-cdu][-f<栏位> ...

  4. Linux之uniq命令详解

    注: 部分概念介绍来源于网络 uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用. uniq 可检查文本文件中重复出现的行列. 语法 uniq [-cdu][-f&l ...

  5. Linux中iptraf命令详解(IP局域网监控工具)

    2019独角兽企业重金招聘Python工程师标准>>> Linux中iptraf命令详解(IP局域网监控工具) 发布时间:2017-12-27 20:46:03   作者:佚名    ...

  6. linux ln(link) 命令详解

    linux ln(link) 命令详解 功能说明:连接文件或目录. 语 法:ln [-bdfinsv][-S <字尾备份字符串>][-V <备份方式>][--help][--v ...

  7. [老男孩笔记系列]-之linux定时任务crontab命令详解

    linux定时任务crontab命令详解 1.1指令语法 crontab [ -u user ] file crontab [ -u user ] { -l | -r | -e } 1.2指令说明 通 ...

  8. linux rm(remove) 命令详解

    linux rm(remove) 命令详解 功能说明:删除文件或目录. 语 法:rm [-dfirv][--help][--version][文件或目录...] 补充说明:执行rm指令可删除文件或目录 ...

  9. linux下dd命令详解

    linux下dd命令详解    名称: dd 使用权限: 所有使用者dd 这个指令在 manual 里的定义是 convert and copy a file 使用方式: dd [option] 如果 ...

最新文章

  1. php in yii framework
  2. String类中的equals方法与Object类中的equals方法的不同点
  3. JAVA中关于并发的一些理解
  4. python中的json_python中json的使用
  5. C#基础知识学习(2)string类中的方法
  6. datatables 更新选中行 的一行数据
  7. 从JVM的角度看JAVA代码--代码优化
  8. Django讲课笔记09:使用QuerySet新增和更新数据
  9. layer 同步调用_YYText源码解读-YYText同步/异步渲染流程(一)—UIView与CALayer
  10. 一个api请求的流程
  11. Servlet容器:Jetty和tomcat的比较
  12. 【图像边缘检测】基于matlab蚁群聚类图像边缘检测【含Matlab源码 728期】
  13. USBCNC输出板与VFD和主轴的使用
  14. Pem私钥pkcs1和pkcs8之间互转
  15. python实现whois查询_Python 工具whois查询
  16. uni-app上传图片并添加水印
  17. 教女朋友学Python(8)——排排坐吃果果
  18. 用jq实现简单的锚点切换
  19. 智能电源插座和电灯开关全国产化电子元件推荐方案
  20. 计算机网络考研面试题

热门文章

  1. 仿网易新闻客户端的上面的tab和下面的功能条
  2. 在线HTTP网站载入速度(响应时间)站长测试(检测)工具
  3. 微信发不出去消息了,几个情况??
  4. VMProtect使用说明
  5. jieba分词paddle模式性能测试
  6. o2o的关健在于线下!
  7. 有限空间作业如何预防窒息和中毒
  8. 每日一练 JS30挑战 HTML5播放器
  9. Win系统 - 找回你的 Win8 / Win10 开始菜单
  10. Django模型修改数据