千家信息网

linux下的删除重复行命令uniq的实例介绍

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容介绍了"linux下的删除重复行命令uniq的实例介绍"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学
千家信息网最后更新 2026年11月03日linux下的删除重复行命令uniq的实例介绍

本篇内容介绍了"linux下的删除重复行命令uniq的实例介绍"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

一,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就一样了。

"linux下的删除重复行命令uniq的实例介绍"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

代码 检查 字符 输出 命令 内容 文件 文本 时候 实例 一行 例子 空字符 输入 信息 参数 只有 大小 更多 标准 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海卓越科技互联网 深圳九邦互联网科技有限公司 礼当家互联网科技 互联网未来科技 上海喔噻互联网科技 苏州大垚互联网科技 国外互联网科技网站 成都仁贤领冠互联网科技有限公司 济南华为互联网科技产业总部基地 中国互联网有什么科技含量 福州新华互联网科技学校 知乎 广州恒生互联网科技有限 燊美集互联网科技有限公司 企晟互联网信息科技有限公司 科技赋能视角下互联网保险发展 互联网金融科技公司的优势 互联网与数字科技关系 互联网科技机房 上海万顺科技互联网有限公司招聘 易租星互联网科技有限公司 互联网最新的科技有限公司 宜安科技 互联网金融 上海喔噻互联网科技 睿民互联网科技 互联网科技类展会 互联网科技产业特征 华夏恒生科技与互联网科技 为客找房互联网科技公司怎么样 互联网科技对化妆品行业 广东猫王互联网科技有限公司电话
0