Linux 命令 `uniq`:去重利器

Linux 命令 uniq:去重利器

在 Linux 系统中,处理文本数据是日常任务中不可或缺的一部分。当我们面对大量重复的数据行时,如何高效地去除这些重复项成为了一个值得探讨的话题。这时,uniq 命令就派上了用场。本文将介绍 uniq 命令的基本用法、选项以及一些实用技巧。

uniq 命令简介

uniq 命令用于从排序好的文本文件中去除重复的行,只显示唯一的行。注意,uniq 命令通常与 sort 命令结合使用,因为 uniq 需要输入的数据已经预先排序过。

基本用法

uniq [options] [file ...]
  • [options]:命令选项,用于指定不同的行为。
  • [file ...]:要处理的文件列表。如果未指定文件,uniq 将从标准输入读取数据。

常用选项

-c 或 --count

在每行前加上该行在文件中出现的次数。

-d 或 --repeated

仅显示重复的行。

-D 或 --all-repeated[=delim]

显示所有重复的行,并在每组重复行之间插入指定的分隔符(默认为空行)。

-f n 或 --skip-fields=n

忽略每行前 n 个字段的比较。字段之间由制表符分隔。

-i 或 --ignore-case

比较时不区分大小写。

-s n 或 --skip-chars=n

忽略每行前 n 个字符的比较。

-u 或 --unique

仅显示唯一的行。

-z, --zero-terminated

以空字符(null)而不是换行符来结束每行。这在处理包含换行符的字段时特别有用。

示例

示例 1:去除重复行

假设我们有一个名为 numbers.txt 的文件,内容如下:

1
2
2
3
4
4
4
5

要去除重复的行,我们可以这样做:

sort numbers.txt | uniq

输出:

1
2
3
4
5

示例 2:显示重复行的次数

使用 -c 选项,我们可以在每行前显示其出现的次数:

sort numbers.txt | uniq -c

输出:

1 1
2 2
1 3
3 4
1 5

示例 3:仅显示重复行

使用 -d 选项,我们可以仅显示重复的行:

sort numbers.txt | uniq -d

输出:

2
4

注意事项

  • uniq 命令仅对排序后的数据有效。如果输入数据未排序,则结果可能不正确。
  • uniq 命令是基于整行进行比较的。如果只想基于行的某个部分进行比较,可以使用其他工具(如 awksedcut)进行预处理。

总结

uniq 命令是一个简单而强大的工具,用于从排序好的文本文件中去除重复的行。通过结合不同的选项,我们可以实现各种复杂的文本处理任务。希望本文能帮助你更好地理解和使用 uniq 命令。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

走进AI大模型的瘦身房,看看如何把大模型塞进我们的手机里

人工智能的广泛应用已经改变了我们的生活方式。从智能助手到自动驾驶汽车,AI技术正变得越来越普及。然而,这些AI大模型往往参数众多,体积庞大,需要依赖庞大的网络计算资源,如何让大模型能在个人电脑,甚至手…

【docker】 /bin/sh: ./mvnw: No such file or directory解决方案.dockerignore被忽略

报错如下:解决方案很简单,但是容易让大家忽视的问题。 > CACHED [stage-1 2/4] WORKDIR /work/ …

【Android面试八股文】使用equals和==进行比较的区别?

使用equals和==进行比较的区别 这道题想考察什么 ? 在开发中当需要对引用类型和基本数据类型比较时应该怎么做,为什么有区别。 考察的知识点 equals 的实现以及栈和堆的内存管理 考生应该如何回答 在 Java 中,equals() 方法和 == 运算符用于比较对象之间的相等性,但它…

数据赋能(111)——体系:监控数据采集——概述、关注焦点

概述 监控数据采集是指对数据采集过程进行实时的监视和控制,以确保数据的准确性、完整性和可用性。监控数据采集旨在及时发现并解决数据采集过程中出现的问题,保证数据的稳定性和可靠性。 监控数据采集的主要目的是确保数据的准确性、完整性和可用性。…

要改进单例模式的实现以确保线程安全并优化性能,有几种常见的方法

要改进单例模式的实现以确保线程安全并优化性能,有几种常见的方法。以下是几种改进 ThreadUtil 单例实现的方法: ### 1. 懒汉式(线程安全版) 使用同步机制来确保线程安全,但只在第一次创建实例时同步,这样…

正则匹配规则

正则表达式&#xff1a;查找某字符串开始和某字符串结束的字符串 a.*?b 查找以a开始&#xff0c;并且以b结束的字符串 例如&#xff1a; 字符串为&#xff1a;上海12345abcd.opi,.<>北京 patten &#xff1a;上海.*?北京 结果&#xff1a;上海12345abcd.opi,.<>…

用互斥锁解决缓存击穿

我先说一下正常的业务流程&#xff1a;需要查询店铺数据&#xff0c;我们会先从redis中查询&#xff0c;判断是否能命中&#xff0c;若命中说明redis中有需要的数据就直接返回&#xff1b;没有命中就需要去mysql数据库查询&#xff0c;在数据库中查到了就返回数据并把该数据存入…

Unity DOTS技术(三)JobSystem+Burst+批处理

文章目录 一.传统方式二.使用JobSystemBurst方式三.批处理 在之前的例子中我们都中用的单线程与传统的编译器,下面我们试着使用JobSystem与打找Burst编译器来对比一下性能的差异. 一.传统方式 1.首先用传统方式创建10000个方块并让基每帧旋转 2.我们可以看到他的帧率是40 …

RBAC 模型梳理

1. RBAC 模型是什么 RBAC&#xff08;Role-Based Access Control&#xff09;即&#xff1a;基于角色的权限控制。通过角色关联用户&#xff0c;角色关联权限的方式间接赋予用户权限。 RBAC 模型由 4 个基础模型组成&#xff1a; 基本模型 RBAC0&#xff08;Core RBAC&#x…

面向AI应用开发实战分享 - 基础篇

“前端转AI&#xff0c;第一讲来了” 引言 如果你是一名前端开发&#xff0c;同时又对AI开发很感兴趣&#xff0c;那么恭喜你&#xff0c;机会来了。 如果不是也没关系&#xff0c;同样能帮大家了解AI应用的开发思路。 本文将带大家从面向AI开发的基础知识开始&#xff0c;再…

Vue3:ElementPlus分装动态列表查询表单和弹窗动态表单

文章目录 概要表单组件封装弹窗组件调用表单组件页面列表调用查询表单 表单组件封装 组件代码 <template><el-formref"ruleFormRef"class"elForm":inline"true":rules"rules":model"TableList"label-width"…

AlaSQL.js:用SQL解锁JavaScript数据操作的魔法

简介 先附上 github 地址 https://github.com/AlaSQL/alasql AlaSQL.js - JavaScript SQL database for browser and Node.js. Handles both traditional relational tables and nested JSON data (NoSQL). Export, store, and import data from localStorage, IndexedDB, or …

高德车道级安全预警再升级 10大场景全方位守护行车安全

今日起&#xff0c;2024年高考、端午节小长假相继到来&#xff0c;正值新一波出行高峰到来&#xff0c;高德地图车道级安全预警功能再次升级。升级后的车道级安全预警功能覆盖了10大安全风险较高的行车场景&#xff0c;全方位、超视距地为用户实时探测、预警行车风险&#xff0…

成都跃享未来教育咨询有限公司,值得信赖!

在浩渺的教育咨询市场中&#xff0c;成都跃享未来教育咨询有限公司以其独特的魅力和卓越的服务质量&#xff0c;成为了行业内的璀璨明星。作为一家致力于为学生提供全方位教育咨询服务的公司&#xff0c;成都跃享未来教育咨询有限公司始终坚持安全可靠的原则&#xff0c;为广大…

树莓派4B_OpenCv学习笔记4:测试摄像头_imread加载显示图像_imwrite保存图片

今日继续学习树莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1&#xff1a; 今日对之前的测试CSI摄像头函数进行一些理解说明&#x…

pytorch中的zero_grad()函数的含义和使用

optimizer.zero_grad() &#xff0c;用于将模型的参数梯度初始化为0。 #反向计算 loss.backward()#反向传播计算梯度 optimizer.step()#更新参数&#xff0c;梯度被反向计算之后&#xff0c;调用函数进行所有参数更新 #在反向传播计算时&#xff0c;梯度的计算是累加&#xff…

降噪是什么意思?视频如何降噪?一文了解全部

在视频制作的过程中&#xff0c;我们经常会遇到噪音问题&#xff0c;这些噪音可能来自拍摄环境、录制设备或其他源头。然而&#xff0c;对于初学者来说&#xff0c;降噪是什么意思&#xff0c;以及如何有效地在视频中进行降噪可能是一些疑惑的问题。本文将深入解释降噪的概念&a…

【算法】深入浅出爬山算法:原理、实现与应用

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

echarts学习: 绘制双y轴折线图

前言 我们公司项目中的折线图大都是双y轴的&#xff0c;因为这些图表往往需要同时展示水位和流量这两种不同单位的数据&#xff0c;因此如何绘制双y轴折线图就是就是我所面临的首要问题。 1.如何绘制双y轴 将yAxis属性的值设置为一个数组&#xff0c;并在数组中添加两个axis对…

【LC刷题】DAY02:977 209 59

#【LC刷题】DAY02&#xff1a;977 209 59 文章目录 977. 有序数组的平方 [link](https://leetcode.cn/problems/squares-of-a-sorted-array/description/)第一思路&#xff1a;直接排序优化&#xff1a;双指针 209. 长度最小的子数组 [link](https://leetcode.cn/problems/min…