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

linux基本功系列之uniq命令实战

文章目录

  • 前言
  • 一. uniq的命令介绍
  • 二. 语法格式及常用选项
  • 三. 参考案例
    • 3.1 统计行数
    • 3.2 对文本进行去重
    • 3.3 显示不重复的行
    • 3.4 仅显示重复的行,且显示重复的行的所有行
    • 3.5 忽略字母大小写
  • 总结

前言

大家好,又见面了,我是沐风晓月,本文是专栏【linux基本功-基础命令实战】的第51篇文章。

专栏地址:[linux基本功-基础命令专栏] , 此专栏是沐风晓月对Linux常用命令的汇总,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。

如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。

🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,双一流院校计算机专业😉😉
💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺
💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘

一. uniq的命令介绍

uniq用户重复数据的处理,使用前先用sort进行排序

主要用途有两个:

  • 将输入文件(或标准输入)中邻近的重复行写入到输出文件(或标准输出)中。
  • 当没有选项时,邻近的重复行将合并为一个。

二. 语法格式及常用选项

依据惯例,我们还是先查看帮助,使用 uniq --help

[root@mufeng ~]# uniq --help
用法:uniq [选项]... [文件]
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.Mandatory arguments to long options are mandatory for short options too.-c, --count           prefix lines by the number of occurrences-d, --repeated        only print duplicate lines, one for each group-D, --all-repeated[=METHOD]  print all duplicate linesgroups can be delimited with an empty lineMETHOD={none(default),prepend,separate}-f, --skip-fields=N   avoid comparing the first N fields--group[=METHOD]  show all items, separating groups with an empty lineMETHOD={separate(default),prepend,append,both}-i, --ignore-case     ignore differences in case when comparing-s, --skip-chars=N    avoid comparing the first N characters-u, --unique          only print unique lines-z, --zero-terminated  end lines with 0 byte, not newline-w, --check-chars=N	对每行第N 个字符以后的内容不作对照--help		显示此帮助信息并退出--version		显示版本信息并退出

为了更直观一些,我们把常用的参数用表格来展示:

参数描述
-c, --count在每行开头增加重复次数。
-d, --repeated所有邻近的重复行只被打印一次。
-D所有邻近的重复行将全部打印。
–all-repeated[=METHOD]类似于 -D,但允许每组之间以空行分割。METHOD取值范围{none(默认),prepend,separate}。
-f, --skip-fields=N跳过对前N个列的比较。
–group[=METHOD]显示所有行,允许每组之间以空行分割。METHOD取值范围:{separate(默认),prepend,append,both}。
-i, --ignore-case忽略大小写的差异。
-s, --skip-chars=N跳过对前N个字符的比较。
-u, --unique只打印非邻近的重复行。
-z, --zero-terminated设置行终止符为NUL(空),而不是换行符。
-w, --check-chars=N只对每行前N个字符进行比较。
–help显示帮助信息并退出。
–version显示版本信息并退出。

这里需要注意一点:

uniq 不会检查重复的行,除非它们是相邻的行。

所以如果想先对输入排序,使用没有uniq 的"sort -u"

三. 参考案例

3.1 统计行数

last默认统计登录系统的用户和IP:

[root@mufeng ~]# last
root     pts/2        192.168.1.4      Mon Feb 27 15:22   still logged in   
root     pts/2        localhost        Mon Feb 27 14:59 - 14:59  (00:00)    
root     pts/2        192.168.1.56     Mon Feb 27 14:59 - 14:59  (00:00)    
root     pts/1        192.168.1.4      Mon Feb 27 14:51   still logged in   
root     pts/2        192.168.1.56     Mon Feb 27 14:48 - 14:51  (00:02)    
laoxin   pts/2        localhost        Mon Feb 27 14:44 - 14:45  (00:00)    
root     pts/2        localhost        Mon Feb 27 14:44 - 14:44  (00:00)    
root     pts/1        192.168.1.4      Mon Feb 27 14:38 - 14:51  (00:13)    
root     pts/0        :0               Thu Dec  8 20:00   still logged in   
root     :0           :0               Thu Dec  8 19:47   still logged in   
reboot   system boot  3.10.0-957.el7.x Thu Dec  8 19:36 - 19:41 (81+00:05)  wtmp begins Thu Dec  8 19:36:35 2022

我们对last的输出进行操作,统计行数:

[root@mufeng ~]# last |awk '{S[$3]++}{for(a in S){print a}}' |sort |uniq -c |sort -rn13 192.168.1.412 localhost11 192.168.1.56

3.2 对文本进行去重

使用uniq是无法对文件进行去重的,但是会把相邻的去掉:

[root@mufeng ~]# cat a.txt
apple
apple
banana
apple
banana
pear
apple
banana
pear
tiger
[root@mufeng ~]# cat a.txt |uniq
apple
banana
apple
banana
pear
apple
banana
pear
tiger

我们加上 -c参数统计,就发现只有相邻的被统计到一起了

[root@mufeng ~]# cat a.txt
apple
apple
banana
apple
banana
pear
apple
banana
pear
tiger
[root@mufeng ~]# cat a.txt |uniq
apple
banana
apple
banana
pear
apple
banana
pear
tiger

如果想要去重,需要结合sort命令,对文件进行排序后再去重

[root@mufeng ~]# cat a.txt |sort
apple
apple
apple
apple
banana
banana
banana
pear
pear
tiger

我们加上uniq和uniq -c来看效果:

[root@mufeng ~]# cat a.txt |sort |uniq
apple
banana
pear
tiger
[root@mufeng ~]# cat a.txt |sort |uniq -c4 apple3 banana2 pear1 tiger

可以看到加上-c参数,就统计了所有重复的行数,如果不加-c参数,只是去掉了重复的行,然后源文件不变。

3.3 显示不重复的行

显示不重复的行,我们需要使用 -u参数

[root@mufeng ~]# sort a.txt
apple
apple
apple
apple
banana
banana
banana
pear
pear
tiger
[root@mufeng ~]# sort a.txt |uniq -u
tiger

可以看到,当我们使用 -u参数的时候,最终结果只显示了不重复的行。

3.4 仅显示重复的行,且显示重复的行的所有行

这个和3.3的案例相反,3.3是显示了不重复的行,本题目是要显示所有重复的行,这时候用到 -D参数

[root@mufeng ~]# sort a.txt |uniq -D
apple
apple
apple
apple
banana
banana
banana
pear
pear

3.5 忽略字母大小写

忽略字母大小写使用 -i参数,比如我们在文本中在追加一个大写的APPLE

[root@mufeng ~]# echo APPLE >> a.txt[root@mufeng ~]# sort a.txt |uniq -iD
apple
apple
apple
apple
APPLE
banana
banana
banana
pear
pear

可以看到大写APPLE也出现在了重复的行里,如果我们不加i默认是没有的:

[root@mufeng ~]# sort a.txt |uniq -c4 apple1 APPLE3 banana2 pear1 tiger
[root@mufeng ~]# sort a.txt |uniq -ic5 apple3 banana2 pear1 tiger
[root@mufeng ~

一旦我们加了i,apple的数量就增加了。

总结

uniq的命令用的场景也比较多,后面我们再一一探讨,沐风晓月!嗨,就到这里,再见吧!
🍻🍻🍻如果你喜欢的话,就不要吝惜你的一键三连了~

  • 💕 好啦,这就是今天要分享给大家的全部内容了,我们下期再见!
  • 💕 博客主页:mufeng.blog.csdn.net
  • 💕 本文由沐风晓月原创,首发于CSDN博客
  • 💕 每一个你想要学习的念头,都是未来的你像现在的你求救,不辜负未来,全力奔赴

请添加图片描述
在这里插入图片描述

相关文章:

linux基本功系列之uniq命令实战

文章目录前言一. uniq的命令介绍二. 语法格式及常用选项三. 参考案例3.1 统计行数3.2 对文本进行去重3.3 显示不重复的行3.4 仅显示重复的行,且显示重复的行的所有行3.5 忽略字母大小写总结前言 大家好,又见面了,我是沐风晓月,本…...

六、SpringBoot项目搭建

日志 Java 主流日志工具库 统一接口 什么是 REST? Representational State Transfer——“表现层状态转化”。可以总结为一句话:REST 是所有 Web 应用都应该遵守的架构设计指导原则。面向资源是 REST 最明显的特征,对于同一个资源的一组不…...

【LeetCode】2363. 合并相似的物品

2363. 合并相似的物品 题目描述 给你两个二维整数数组 items1 和 items2 ,表示两个物品集合。每个数组 items 有以下特质: items[i] [valuei, weighti] 其中 valuei 表示第 i 件物品的 价值 ,weighti 表示第 i 件物品的 重量 。items 中每…...

华为OD机试题,用 Java 解【出租车计费】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...

【人脸识别】DDL:数据分布知识蒸馏思想,提升困难样本(遮挡、低分辨率等)识别效果

论文题目:《Improving Face Recognition from Hard Samples via Distribution Distillation Loss》 论文地址:https://arxiv.org/pdf/2002.03662v3.pdf 代码地址:https://github.com/HuangYG123/DDL 1.前言及相关工作 Large facial variatio…...

如何管理好仓库/库房?

仓库管理是企业管理中不可缺少的一部分,事关企业能否正常运行的关键之一,古人有云:“三军未动粮草先行”,一个企业仓库管理做不好,他的生产管理肯定也是做不好的,不是说生产管理人员的管理能力不具备&#…...

Unity Lighting -- Unity的光源简介

在主菜单栏中,点击Window -> Rendering -> Light Explorer打开光源管理器,这个标签页可以看到场景中所有的光源,包括每个光源的类型,形状,模式,颜色,强度,阴影等信息。 在主菜…...

Android仿网易云音乐歌单详情页

效果图实现思路:1、Activity设置自定义Shared Element切换动画2、透明状态栏(透明Toolbar,使背景图上移)3、Toolbar底部增加和背景一样的高斯模糊图,并上移图片(为了使背景图的底部作为Toolbar的背景)4、上…...

linux基本功系列之free命令实战

文章目录前言一. free命令介绍二. 语法格式及常用选项三. 参考案例3.1 查看free相关的信息3.2 以MB的形式显示内存的使用情况3.3 以总和的形式显示内存的使用情况3.4 周期性的查询内存的使用情况3.5 以更人性化的形式来查看内存的结果输出总结前言 大家好,又见面了…...

华为OD机试模拟题 用 C++ 实现 - 连续子串(2023.Q1)

最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 最多获得的短信条数(2023.Q1)) 文章目录 最近更新的博客使用说明连续子串题目输入输出示例一输入输出说明Code使用说明 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。 华为 OD …...

【软考——系统架构师】UML 建模与架构文档化

🔎这里是【软考——系统架构师】,关注我考试轻松过线 👍如果对你有帮助,给博主一个免费的点赞以示鼓励 欢迎各位🔎点赞👍评论收藏⭐️ 文章目录UML 基础UML 软件开发过程系统架构文档化送书福利UML 基础 U…...

Spring中常用注解

声明 bean 的注解 Component:泛指各种组件 Controller、Service、Repository 都可以称为Component Controller:控制层 Service:业务层 Repository:数据访问层Bean 的生命周期属性 Scope 设置类型包括:设置 Spring 容器…...

基于SpringCloud的可靠消息最终一致性06:轮询事务消息

上一节把可靠消息最终一致性的正常逻辑代码顺序执行了一次,并且对于同一个事务消息,在正常情况下它要被发送至少两次。 这是因为在发送消息之前,TransactionMessageService就已经把消息保存到了数据库中。而在首次消费完消息后,TransactionMessageListener并没有从数据库中…...

Python Flask + Echarts 轻松制作动态酷炫大屏( 附代码)

目录一、确定需求方案二、整体架构设计三、编码实现 (关键代码)四、完整代码五、运行效果1.动态实时更新数据效果图 说明: 其中 今日抓拍,抓拍总数,预警信息统计,监控点位统计图表 做了动态实时更新处理。 ​ 2.静态…...

Wepack(1):SourceMap讲解以及使用

今天我们来讲讲定位源码的工具 Sourcemap , 我们先讲最简单的配置,之后才补充 sourcemap 的其他属性 Sourcemap 作用 可以在打包的代码直接对应相应源码 例如 vue2 , vue3可以把对应的错误上传到相关服务器 使用 webpack.config.js const config …...

华为OD机试题,用 Java 解【最多等和不相交连续子序列】问题

最近更新的博客 华为OD机试题,用 Java 解【停车场车辆统计】问题华为OD机试题,用 Java 解【字符串变换最小字符串】问题华为OD机试题,用 Java 解【计算最大乘积】问题华为OD机试题,用 Java 解【DNA 序列】问题华为OD机试 - 组成最大数(Java) | 机试题算法思路 【2023】使…...

Kubernetes06:Controller

Kubernetes06:Controller 1、什么是controller 管理和运行容器的对象,是一个物理概念 在集群上管理和运行容器的对象 2、Pod和Controller之间的关系 Pod是通过controller来实现应用的运维 比如伸缩、滚动升级等等操作Pod和Controller之间通过 label 标签建立关系…...

采购文件中 RFI、RFQ、RFP、IFB的区别

【PMBOK的描述】   采购文件用于征求潜在卖方的建议书。如果主要依据价格来选择卖方(如购买商业或标准产品时),通常就使用标书、投标或报价等术语。如果主要依据其他考虑(如技术能力或技术方法)来选择卖方&#xff0…...

linux升级gcc版本详细教程

0.前言一般linux操作系统默认的gcc版本都比较低,例如centos7系统默认的gcc版本为4.8.5。gcc是从4.7版本开始支持C11的,4.8版本对C11新特性的编译支持还不够完善,因此如果需要更好的体验C11以及以上版本的新特性,需要升级gcc到一个…...

NBA Top Shot 跌落神坛

近日,美国职业篮球联盟(NBA)授权的NFT 项目“NBA Top Shot Moments”被纽约法院初步裁定为“可能符合证券的定义”,虽然这不是对2021年用户指控该项目违法的最终判决,但这个裁定引发了市场担忧,部分NFT的地…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...

土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等

🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...

Rapidio门铃消息FIFO溢出机制

关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...

智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制

在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...

AI病理诊断七剑下天山,医疗未来触手可及

一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...

网站指纹识别

网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时,拉取并启动容器后,有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致,包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因,并提供解决方案。 一、确认MySQL容器的运行状态 …...

算法打卡第18天

从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...