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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/977804.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于 SpringBoot Vue 的生鲜商城系统设计和实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

电机控制的空间矢量调制 (SVPWM)

目录 概述 1 电机控制的空间矢量调制 (SVPWM)介绍 2 实现原理 2.1 设计要求 2.2 SVPWM 的实现 3 SVPWM的C语言 3.1 代码文件 3.2 STM32G4平台上验证 4 源代码文件 概述 本文主要介绍电机控制的空间矢量调制 (SVPWM),空间矢量调制 (SVPWM) 是感应电机和永磁…

服务器离线部署DeepSeek

目标 本次部署的目标是在本地服务器上部署DeepSeek。但是该服务不能连接外网,因此只能使用离线部署的方式。为了一次完成部署。现在云服务器上进行尝试。 云服务器部署尝试 云服务器配置 CentOS72080Ti 11GB 安装准备 1、上传iso并配置为本地yum源 安装前先将…

Unity打包APK报错 using a newer Android Gradle plugin to use compileSdk = 35

Unity打包APK报错 using a newer Android Gradle plugin to use compileSdk 35 三个报错信息如下 第一个 WARNING:We recommend using a newer Android Gradle plugin to use compileSdk 35This Android Gradle plugin (7.1.2) was tested up to compileSdk 32This warning…

Ubuntu 22.04安装K8S集群

以下是Ubuntu 22.04安装Kubernetes集群的步骤概要 一、设置主机名与hosts解析 # Master节点执行 sudo hostnamectl set-hostname "k8smaster" # Worker节点执行 sudo hostnamectl set-hostname "k8sworker1"# 所有节点的/etc/hosts中添加: ca…

《AI 大模型 ChatGPT 的传奇》

《AI 大模型 ChatGPT 的传奇》 ——段方 某世界 100 强企业大数据/AI 总设计师 教授 北京大学博士后 助理 :1三6三二四61四五4 1 AI 大模型的概念和特点 1.1 什么是”大模型、多模态“? 1.2 大模型带来了什么? 1.3 大模型为什么能产生质变&am…

期权帮|股指期货多单和空单有什么区别?

锦鲤三三每日分享期权知识,帮助期权新手及时有效地掌握即市趋势与新资讯! 股指期货多单和空单有什么区别? 一、股指期货多单和空单定义与操作方向: (1)股指期货多单定义:投资者买入股指期货合…

从【人工智能】到【计算机视觉】,【深度学习】引领的未来科技创新与变革

前几天偶然发现了一个超棒的人工智能学习网站,内容通俗易懂,讲解风趣幽默,简直让人欲罢不能。忍不住分享给大家,点击这里立刻跳转,开启你的AI学习之旅吧! 前言 – 人工智能教程https://www.captainbed.cn/l…

如何在VMware虚拟机的window10系统中安装网易mumu模拟器

安卓模拟器是可以在电脑的windows环境中运行手机软件的工具,喜欢网游或者是要逆向安卓应用应该都要安装这个模拟器,如果要模拟器正常工作,主机的虚拟化应该开启,也就是要开启vt。在有些情况下,需要把模拟器安装到电脑的虚拟机里,隔离模拟器与主机,这时vt的开启就稍麻烦些…

【Rust中级教程】2.10. API设计原则之受约束性(constrained) Pt.1:对类型进行修改、`#[non_exhaustive]`注解

喜欢的话别忘了点赞、收藏加关注哦(加关注即可阅读全文),对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 2.10.1. 接口的更改要三思 如果你的接口要做出对用户可见的更改,那么一定要三思…

【阿】(阿联酋)迪拜求职指南(Gulftalent)

https://www.gulftalent.com/resources/dubai-jobs-guide 文章目录 Types of Employers 雇主类型Multinationals 跨国公司Large local firms 大型本地公司Local SMEs 本地中小企Government 政府Assessing your Chances 评估您的机会其他城市(阿布扎比和沙迦&#xf…

win11 24h2 远程桌面 频繁断开 已失去连接 2025

一、现象 Windows11自升级2025年2月补丁后版本号为系统版本是26100.3194,远程桌面频繁断开连接,尝试连接,尤其在连接旧的server2012 二、临时解决方案 目前经测试,在组策略中,远程桌面连接客户端,关闭客户…

[算法--前缀和] 二维前缀和

目录 1. 前缀和数组的递推公式: dp[i][j] = dp[i-1][j] + dp[i][j-1] + nums[i][j] - dp[i-1][j-1].2. 前缀和数组需要额外开一行一列.3. 想要快速求任意一个矩形和, 实际上是多个前缀和的拼凑.今天来贴一道模板题 -> 二位前缀和 然后我们来简单总结两个公式: 因为这是一个…

公共数据授权运营模式研究(总体框架、主要模式及发展趋势)

本报告以公共数据运营模式为核心,以释放公共数据价值为目标,深入分析公共数据概念及特征,厘清公共数据运营的内涵及本质,提出纵深分域数据要素市场运营体系的总体思路,构建了一座(一个数据底座)…

MySQL主从架构

MySQL主从架构 MySQL REPLICATION 在实际生产环境中,如果对数据库的读和写都在一个数据库服务器中操作。无论是在安全性、高可用性,还是高并发等各个方面都是完全不能满足实际需求的,因此,一般来说都是通过主从复制(…

C# Combox 绑定数据

1.在界面中添加一个combox 2.将数据绑定到combox List<GrindingType> type new List<GrindingType>();type.Add(new GrindingType { Id 1, Name "Product A", Type new List<string> { "1", "2" } });type.Add(new Grin…

idea 部署 AJ-Report 启动的注意事项

AJ-Report 入门参考&#xff1a; AJ-Report 初学(入门教程) gitee 下载&#xff1a;https://gitee.com/anji-plus/report/releases 根据上面提供的 gitee 下载链接&#xff0c;点击直接下载 最上面的就是最新版本的&#xff0c;旧版本往下拉就可以找到&#xff0c;有三个下载…

【Go | 从0实现简单分布式缓存】-3:分布式节点通信

本文目录 一、通信流程二、peers.go三、http.go四、geecache.go五、测试代码 本文为极客兔兔动手写分布式缓存GeeCache学习笔记。 一、通信流程 在前面一节中&#xff0c;已经为 HTTPPool 实现了服务端功能&#xff0c;通信不仅需要服务端还需要客户端&#xff0c;因此本节来…

Win32/ C++ 简易对话框封装框架(多语言, 通知栏菜单, 拖拽文件处理)

Win32 简易对话框封装简易框架示例 1. 菜单操作: 多语言 2. 通知栏图标菜单 3. 其他操作: 接受拖拽文件等等 CDialogFrame.h #pragma once #include "CWindow/CDialogBase.h" #include "CNSFHeader.h" #include "Win32Utils/CBytesUtils.h" …

如何在 Linux 上安装和配置 Zsh

文章目录 如何在 Linux 上安装和配置 Zsh1. 安装 Zsh1.1 在 Ubuntu/Debian 上安装1.2 在 CentOS/RHEL/Fedora 上安装1.3 在 Arch Linux 上安装1.4 验证 Zsh 安装 2. 设置 Zsh 为默认 Shell2.1 验证默认 shell 3. 配置 Zsh3.1 使用 Oh My Zsh3.1.1 安装 Oh My Zsh3.1.2 启用插件…