当前位置: 首页 > news >正文

Linux(Centos 7.6)命令详解:uniq

1.命令作用

过滤标准输入的相邻匹配行,写入标准输出(Filter adjacent matching lines from INPUT (or standard input),writing to OUTPUT (or standard output).)

简单作用解释为,删除文件中多余的相邻相同行,仅保留一行。

如果没有选项,匹配的行将合并到第一个出现(With no options, matching lines are merged to the first occurrence.)

2.命令语法

Usage: uniq [OPTION]... [INPUT [OUTPUT]]

3.参数详解

OPTION:

  • -c, --count,以出现的次数作为行前缀
  • -d, --repeated,只打印相邻的重复行,多个相邻重复行仅打印一次/一次
  • -D, --all-repeated[=METHOD],打印所有相邻的重复行,可以用空行分隔,也可以指定分隔方式,METHOD={none(default),prepend,separate};-D相当于--all-repeated=none,重复行组中间不用分隔,METHOD=prepend是重复行组前用空行分隔,METHOD=separate是重复行组之间用空行分隔
  • -f, --skip-fields=N,避免比较前N个字段,字段之间以空格分隔
  • --group[=METHOD],显示所有组(包括相邻重复组、单行不重复组),用空行分隔组,METHOD={separate(default),prepend,append,both},separate表示组之间使用空行分隔组,prepend表示组前用空行分隔组,append表示组后用空行分隔组,both表示组前组后都用空行分隔
  • -i, --ignore-case,比较时忽略大小写差异
  • -s, --skip-chars=N,避免比较前N个字符
  • -u, --unique,只打印唯一的行,相邻重复的行不打印,与-D功能相反
  • -z, --zero-terminated,以0字节结束行,而不是换行,打印所有行,不做任何操作
  • -w, --check-chars=N,每行比较不超过N个字符

4.常用用例

4.1.默认相邻连续重复行去重

[root@node2 Desktop]# cat file1.txt 
AAAA
aaaa
aaaa
aaaa
dddd
cccc
bbbb
bbbb
[root@node2 Desktop]# uniq file1.txt 
AAAA
aaaa
dddd
cccc
bbbb
[root@node2 Desktop]#

去重说明:相邻连续重复的行去重留一行,其他的输出不变

4.2.打印重复次数显示(-c)

[root@node2 Desktop]# uniq -c file1.txt 
      1 AAAA
      3 aaaa
      1 dddd
      1 cccc
      2 bbbb
[root@node2 Desktop]# 

去重说明:在输出行首输出重复的次数,用于统计重复次数,一般先sort排序,然后uniq去重

4.3.忽略大小写去重(-i)

[root@node2 Desktop]# cat file1.txt 
AAAA
aaaa
aaaa
aaaa
dddd
cccc
bbbb
bbbb
[root@node2 Desktop]# uniq -i file1.txt 
AAAA
dddd
cccc
bbbb
[root@node2 Desktop]# 

去重说明:-i参数是忽略大小写,则大写的AAAA与小写的aaaa视为相同的行,去重只显示一次 

4.4.前N个字符后对比去重(-s)

[root@node2 Desktop]# cat file2.txt 
AAAA
aaaa
aaaa
aaaa
aabb
ddbb
dddd
cccc
dddd
bbbb
bbbb
eeee
[root@node2 Desktop]# uniq -s 2 file2.txt 
AAAA
aaaa
aabb
dddd
cccc
dddd
bbbb
eeee
[root@node2 Desktop]# 

去重说明:-s参数是每行前n个字符后对比,相同则去重输出,那么aabb与ddbb两行去掉前两个字符后都是bb相同,则输出只显示aabb,不显示ddbb 

4.5.前N个字符对比去重(-w)

[root@node2 Desktop]# uniq -w 2 file2.txt 
AAAA
aaaa
ddbb
cccc
dddd
bbbb
eeee
[root@node2 Desktop]#

 去重说明:-w参数是每行前n个字符对比,相同则去重输出,那么aaaa与aabb前两个字符都是aa相同,则输出只显示aaaa,不显示aabb;ddbb与dddd前两个字符都是dd,则输出只显示ddbb,不显示dddd;以下类似

4.6.前N个字段后对比去重(-f)

[root@node2 Desktop]# cat file3.txt 
1 AAAA
2 aaaa
3 aaaa
4 aaaa
5 aabb
6 ddbb
7 dddd
8 cccc
9 dddd
10 dddd
11 bbbb
12 bbbb
[root@node2 Desktop]# uniq -f 1 file3.txt 
1 AAAA
2 aaaa
5 aabb
6 ddbb
7 dddd
8 cccc
9 dddd
11 bbbb
[root@node2 Desktop]# 

  去重说明:-f参数是按空格分隔字段,按照-f指定的字段数后对比去重,如上文件,第一列(字段)是行值,如果都考虑第一列(字段),那么不会有重复的行;去掉第一列(字段),那么9行和10行都是dddd,去重后仅显示9行的dddd

4.7.统计重复结果次数排序

[root@node2 Desktop]# uniq -c file1.txt | sort -nr
      3 aaaa
      2 bbbb
      1 dddd
      1 cccc
      1 AAAA
[root@node2 Desktop]# 

去重说明:基于4.2用例结果,使用sort -nr以字符数值及倒叙输出,得到从大到小排序输出 

相关文章:

  • 【愚公系列】《Python网络爬虫从入门到精通》034-DataFrame简单数据计算整理
  • 表单制作代码,登录动画背景前端模板
  • 2025网络安全等级测评报告,信息安全风险评估报告(Word模板)
  • DeepSeek开源周Day2:DeepEP - 专为 MoE 模型设计的超高效 GPU 通信库
  • win11 24h2 远程桌面 频繁断开 已失去连接 2025
  • 通过Python编程语言实现“机器学习”小项目教程案例
  • Ollama微调
  • 猿大师播放器:网页内嵌VLC/FFPlayer在Web端直接播放RTSP/RTMP/H.265视频流
  • (Arrow)试时间处理变得更简单
  • 【Linux Oracle】time命令+oracle exp压缩
  • 分享httprunner 结合django实现平台接口自动化方案
  • QT各种版本下载安装
  • 【初阶数据结构】星河中的光影 “排” 象:排序(下)
  • 计算机网络————(三)
  • 性能测试基础知识点
  • RGMII(Reduced Gigabit Media Independent Interface)详解
  • 【论文分享02】A brief introduction to weakly supervised learning
  • 如何选择更安全的无人自助管理私人影院物联网框架?
  • 谈谈 ES 6.8 到 7.10 的功能变迁(4)- 聚合功能篇
  • Java中将异步调用转为同步的五种方法
  • 阎良做网站/衡水seo优化
  • 找人做网站被骗/seo顾问是什么
  • 重庆公司网站seo/全网整合营销
  • b2c电子商务购物网站/杭州seo排名优化外包
  • 网站做5年有多少流量/域名批量查询
  • ps怎么做网站界面设计/seo关键词外包公司