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

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以字符数值及倒叙输出,得到从大到小排序输出 


http://www.kler.cn/a/563664.html

相关文章:

  • 从 0 到 1,用 Python 构建超实用 Web 实时聊天应用
  • 【QT】QLinearGradient 线性渐变类简单使用教程
  • 深入解析Java线程优先级的奥秘
  • 文件上传-Windows点号绕过
  • kafka-新增topic副本数
  • 【第八节】C++设计模式(结构型模式)-Decorator(装饰器)模式
  • 【Python爬虫(86)】元宇宙浪潮下,Python爬虫能否乘风破浪?
  • python单例模式魔法方法
  • 【Rust中级教程】2.10. API设计原则之受约束性(constrained) Pt.1:对类型进行修改、`#[non_exhaustive]`注解
  • DINOv2 + yolov8 + opencv 检测卡车的可拉拽雨覆是否完全覆盖
  • C++的多态
  • 【前端基础】Day 2 HTML
  • KIMI K1.5:大规模强化学习在大语言模型中的应用与工程实践
  • 子组件如何通过v-model实现数据的双向绑定
  • Holoens2开发报错记录02_通过主机获取彩色和深度数据流常见错误
  • Java 面试篇-Redis 专题
  • Django项目开发的网站展示来自fasta文件的蛋白质名称和序列的可视化表格
  • 【FL0091】基于SSM和微信小程序的社区二手物品交易小程序
  • androidstudio 运行项目加载很慢,优化方法
  • 什么是大语言模型