当前位置: 首页 > 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的地…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析

1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表?1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手,它却总在Library里给你写"回忆录"?卸载的Final Cut Pro像电子幽灵般阴魂不散?总是会有残留文件,别慌!这份Mac软件卸载指南,将用最硬核的方式教你"数字分手术"&#xff0…...

UR 协作机器人「三剑客」:精密轻量担当(UR7e)、全能协作主力(UR12e)、重型任务专家(UR15)

UR协作机器人正以其卓越性能在现代制造业自动化中扮演重要角色。UR7e、UR12e和UR15通过创新技术和精准设计满足了不同行业的多样化需求。其中,UR15以其速度、精度及人工智能准备能力成为自动化领域的重要突破。UR7e和UR12e则在负载规格和市场定位上不断优化&#xf…...

【Oracle】分区表

个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

Spring是如何解决Bean的循环依赖:三级缓存机制

1、什么是 Bean 的循环依赖 在 Spring框架中,Bean 的循环依赖是指多个 Bean 之间‌互相持有对方引用‌,形成闭环依赖关系的现象。 多个 Bean 的依赖关系构成环形链路,例如: 双向依赖:Bean A 依赖 Bean B,同时 Bean B 也依赖 Bean A(A↔B)。链条循环: Bean A → Bean…...

CSS | transition 和 transform的用处和区别

省流总结: transform用于变换/变形,transition是动画控制器 transform 用来对元素进行变形,常见的操作如下,它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...