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

【busybox记录】【shell指令】uniq

目录

内容来源:

【GUN】【uniq】指令介绍

【busybox】【uniq】指令介绍

【linux】【uniq】指令介绍

使用示例:

去除重复行 - 默认输出

去除重复行 - 跳过第n段(空格隔开),比较n+1以后的内容,去重

去除重复行 - 跳过第n个字节,比较n+1以后的内容,去重

去除重复行 - 比较指定宽度的内容,去重

去除重复行 - 打印每个行出现的次数

去除重复行 - 忽略大小写

去除重复行 - 丢弃不重复的行,只输出重复的行

去除重复行 - 丢弃重复的行,只输出不重复的行

去除重复行 - 不丢弃连续的重复输入行,而是丢弃不重复的行

去除重复行 - 可以按组把内容分开

常用组合指令:

去除重复行 - 跳过第n个字节,比较(n+1) ~ (n+m)之间的内容,去重

指令不常用/组合用法还需继续挖掘:


内容来源:

        GUN : Coreutils - GNU core utilities

        busybox v1.36.1 : 【busybox记录】【shell指令】基于的Busybox的版本和下载方式-CSDN博客

【GUN】【uniq】指令介绍

uniq:唯一标识文件
uniq 在给定的输入中写入唯一的行,如果没有给出任何输入,则写入标准输入,或者输入名称为' - '。
简介:
uniq [option]... [input [output]]
默认情况下,uniq打印它的输入行,但它会丢弃除了第一行以外的所有相邻的重复行,这样就没有重复的输出行了。可选地,它可以丢弃不重复的行或所有重复的行。
输入不需要排序,但只有当重复的输入行相邻时,才会检测它们。如果你想丢弃不相邻的重复行,可能需要使用sort -u。参见第7.1节[排序调用],第49页。
比较遵循LC_COLLATE区域类别指定的规则。
如果没有指定输出文件,uniq将写入标准输出。
该程序接受以下选项。参见第2章[常见选项],第2页。
‘-f n’
‘--skip-fields=n’
在检查唯一性之前,跳过每一行的n个字段。如果一行中字段少于n个,则使用null字符串进行比较。字段是空白字符和非空白字符的序列。字段编号是基于1的,即 -f 1 会跳过第一个字段(可以有前导空格)。
为了兼容,uniq支持传统的选项语法 -n。新的脚本应该使用-f n。
‘-s n’
‘--skip-chars=n’
在检查唯一性之前跳过n个字符。如果一行少于n个字符,则使用null字符串进行比较。如果同时使用字段和字符跳过选项,则首先跳过字段。
在不符合POSIX 1003.1-2001的系统上,uniq支持传统的option语法+n。尽管这种传统的行为可以用_ POSIX2_VERSION 环境变量控制(参见2.13节),但可移植脚本应该避免那些行为依赖于该变量的命令。例如,使用`uniq ./+10`或`uniq -s 10`,而不是模棱两可的`uniq +10`。
‘-c’
‘--count’ 
打印每一行出现的次数。
‘-i’
‘--ignore-case’
比较行时忽略大小写的差异。
‘-d’
‘--repeated’
丢弃不重复的行。单独使用这个选项时,uniq只打印每个重复行的第一份副本,而不打印其他内容。
‘-D’
‘--all-repeated[=delimit-method]’不要丢弃第二个和后续重复的输入行,而是丢弃不重复的行。这个选项主要与其他选项一起使用,例如忽略大小写或只比较选定字段。支持可选的delimit-method,用于指定如何分隔重复行的组,它必须是下列之一:‘none’     不要划分重复的行组。这等价于 --all-repeat (-D)。‘prepend’  在每组重复行之前输出一个换行符。使用--zero-terminated (-z)时,使用0字节(ASCII NUL)代替换行符作为分隔符。‘separate’ 用一个换行符将一组重复的行分开。这与使用`prepend`相同,只是在第一组之前没有插入分隔符,因此可能更适合直接输出给用户。使用--zero-terminated (-z)时,使用0字节(ASCII NUL)代替换行符作为分隔符。当分组被分隔,并且输入流包含空行时,输出是不明确的。为了避免这种情况,请通过 ‘tr -s '\n'’ 过滤输入以删除空行。这是一个GNU扩展。
‘--group[=delimit-method]’输出所有行,并划分每个唯一的组。使用 --zero-terminated (-z) 时,使用0字节(ASCII NUL)代替换行符作为分隔符。可选的delimit-method指定了如何划分组,它必须是下列之一:‘separate’  用一个分隔符分隔唯一的组。如果没有指定,这是默认的定界方法,更适合直接输出给用户。‘prepend’   在每组不同的项之前输出一个定界符。‘append’    在每组不同的项之后输出一个定界符。‘both’      在每组不同的项之间输出一个定界符。当分组被分隔,并且输入流包含空行时,输出是不明确的。为了避免这种情况,请通过 ‘tr -s '\n'’ 过滤输入以删除空行。这是一个GNU扩展。
‘-u’
‘--unique’丢弃重复输入组的最后一行输出。当单独使用这个选项时,uniq只打印唯一的行。
‘-w n’
‘--check-chars=n’每行最多比较n个字符(跳过任何指定的字段和字符后)。默认情况下,比较剩余的所有行。
‘-z’
‘--zero-terminated’
用0字节而不是换行符分隔项(ASCII LF)。例如,将输入视为用ASCII NUL分隔的项目,并以ASCII NUL终止输出项目。
此选项可以与‘perl -0’ 或 ‘find -print0’ 和 ‘xargs -0’一起使用,它们的作用相同,以便可靠地处理任意文件名(即使是包含空格或其他特殊字符的文件名)。使用-z,换行符被视为字段分隔符。
退出状态为零表示成功,非零值表示失败。

【busybox】【uniq】指令介绍

NA

【linux】【uniq】指令介绍

[root@localhost bin]# 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.必选参数对长短选项同时适用。-c, --count           prefix lines by the number of occurrences-d, --repeated        only print duplicate lines, one for each group-D                    print all duplicate lines--all-repeated[=METHOD]  like -D, but allow separating groupswith an empty line;METHOD={none(default),prepend,separate}-f, --skip-fields=N   avoid comparing the first N fields--group[=METHOD]  show all items, separating groups with an empty line;METHOD={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     line delimiter is NUL, not newline-w, --check-chars=N	对每行第N 个字符以后的内容不作对照--help		显示此帮助信息并退出--version		显示版本信息并退出若域中为先空字符(通常包括空格以及制表符),然后非空字符,域中字符前的空字符将被跳过。提示:"uniq" 不会检查重复的行,除非它们是相邻的行。
您也许需要事先对输入排序,或使用 "sort -u" 而非 "uniq"。
另外,比较操作将服从 "LC_COLLATE" 环境变量所指定的规则。GNU coreutils 在线帮助:<https://www.gnu.org/software/coreutils/>
请向 <http://translationproject.org/team/zh_CN.html> 报告 uniq 的翻译错误
完整文档请见:<https://www.gnu.org/software/coreutils/uniq>
或者在本地使用:info '(coreutils) uniq invocation'

使用示例:

去除重复行 - 默认输出

指令: cat test1.txt | uniq

去除重复行 - 跳过第n段(空格隔开),比较n+1以后的内容,去重

-f 选项

先看看原始文件

我们跳过51{x}add 这个字段,只比较后面的段

指令: cat test1.txt| uniq -f 1

结果如上,会发现 511add 和 512add 行被去掉了,因为增加-f 1选项后,比对是从后面的(1 2)/(1 3)开始的

去除重复行 - 跳过第n个字节,比较n+1以后的内容,去重

-s 选项

先看看原始文件

指令:cat test1.txt | uniq -s 3

指令:cat test1.txt | uniq -s 2

去除重复行 - 比较指定宽度的内容,去重

-w 选项

指令: cat test1.txt | uniq -w 2

去除重复行 - 打印每个行出现的次数

-c 选项

结合上面的-s  -f  选项一起看看输出

指令:cat test1.txt | uniq -s 3 -c

指令:cat test2.txt | uniq -f 2 -c

去除重复行 - 忽略大小写

-i 选项

指令:cat test1.txt |uniq -s 3 -c -i

去除重复行 - 丢弃不重复的行,只输出重复的行

-d 选项

指令:cat test1.txt | uniq -d

去除重复行 - 丢弃重复的行,只输出不重复的行

-u 选项

指令:cat test1.txt | uniq -u

去除重复行 - 不丢弃连续的重复输入行,而是丢弃不重复的行

-D 选项

--all-repeated[=delimit-method] 选项

指令: cat test1.txt | uniq -D

指令: cat test1.txt | uniq --all-repeated=none

指令: cat test1.txt | uniq --all-repeated=prepend

指令: cat test1.txt | uniq --all-repeated=separate

指令: cat test1.txt | uniq --all-repeated=separate |tr -s '\n'

去除重复行 - 可以按组把内容分开

--group[=delimit-method] 选项

-w 1 选项是只比较每一行的第一个字符,其余字符忽略

指令: cat test1.txt | uniq -w 1 --group=separate

指令: cat test1.txt | uniq -w 1 --group=prepend

指令: cat test1.txt | uniq -w 1 --group=append

指令: cat test1.txt | uniq -w 1 --group=both

常用组合指令:

去除重复行 - 跳过第n个字节,比较(n+1) ~ (n+m)之间的内容,去重

-s 和 -w 选项

比较从第4个字节到第6个字节之间的3个字节的内容

指令: cat test1.txt | uniq -s 3 -w 3

指令不常用/组合用法还需继续挖掘:

相关文章:

【busybox记录】【shell指令】uniq

目录 内容来源&#xff1a; 【GUN】【uniq】指令介绍 【busybox】【uniq】指令介绍 【linux】【uniq】指令介绍 使用示例&#xff1a; 去除重复行 - 默认输出 去除重复行 - 跳过第n段&#xff08;空格隔开&#xff09;&#xff0c;比较n1以后的内容&#xff0c;去重 去…...

Nginx从入门到精通速成

文章目录 一. **Nginx** **的简介**1.1 什么是 **nginx**1.2 正向代理1.3 反向代理1.4 **负载均衡**1.5 动静分离 二. **Nginx** **的安装**三. **Nginx** **的常用的命令**四. **Nginx** **的配置文件**五. **Nginx** **配置实例**反向代理实例**1**5.1 实现效果5.2 准备工作5…...

Flutter笔记:Widgets Easier组件库(4)使用按钮组

Flutter笔记 Widgets Easier组件库&#xff08;4&#xff09;&#xff1a;使用按钮组 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress…...

Docker常用命令 镜像库设置

Docker常用命令 & 镜像库设置 1. 镜像操作2. 容器操作3. 网络操作4. Docker Compose操作5. Docker volume操作6. Docker run介绍7. 镜像库设置 1. 镜像操作 列出本地所有的镜像 docker images从远程仓库拉取镜像到本地 docker pull <image_name>删除本地的指定镜像…...

无人零售,重塑购物新纪元

在这个快节奏的时代&#xff0c;科技的每一次跃进都在悄无声息地改变着我们的生活方式。而今&#xff0c;无人零售正以雷霆之势&#xff0c;颠覆传统购物模式&#xff0c;为我们带来前所未有的便捷与智能体验。想知道无人零售如何彻底改变我们的购物方式吗&#xff1f;跟随我&a…...

【图片格式转换】ICO、JPG、JPEG、PNG图片格式在线免费转换

ICO、JPG、JPEG、PNG图片格式转换 图片格式转换 https://orcc.online 支持ICO、JPG、JPEG、PNG等 主页 https://www.orcc.online 其他工具 pdf在线免费转word文档 https://orcc.online/pdf 时间戳转换 https://orcc.online/timestamp Base64 编码解码 https://orcc.onlin…...

通过自然语言处理执行特定任务的AI Agents;大模型控制NPC执行一系列的动作;个人化的电子邮件助手Panza

✨ 1: OpenAgents 通过自然语言处理执行特定任务的AI代理 OpenAgents是一个开放平台&#xff0c;旨在使语言代理&#xff08;即通过自然语言处理执行特定任务的AI代理&#xff09;的使用和托管变得更加便捷和实用。它特别适合于日常生活中对数据分析、工具插件获取和网络浏览…...

4.2 JavaScript语法

4.2.1 JavaScript大小写 在JavaScript中大小写是严格区分的&#xff0c;无论是变量、函数名称、运算符和其他语法都必须严格按照要求的大小写进行声明和使用。例如变量hello与变量HELLO会被认为是完全不同的内容。 4.2.2 JavaScript分号 很多编程语言&#xff08;例如C、Java和…...

面试二十五、remove和earse的区别

vector中erase的作用是删除掉某个位置position或一段区域&#xff08;begin, end)中的元素&#xff0c;减少其size&#xff0c;返回被删除元素下一个元素的位置。 vector中remove的作用是将范围内为val的值都remove到后面&#xff0c;返回新的_last值&#xff08;非val部分的en…...

普乐蛙元宇宙VR体验馆设备集体亮相VR文旅景区展

普乐蛙全国巡展又双叒叕开始了! 这次来到的是“好客山东”↓↓ 山东2024休闲旅游产业展 4月25日至27日&#xff0c;2024休闲旅游产业展在临沂国际博览中心举办。本次展会以“潮购文旅好品&#xff0c;乐享时尚生活”为主题&#xff0c;汇聚全国文旅产业上下游500多家企业、上万…...

北京大学-知存科技存算一体联合实验室揭牌,开启知存科技产学研融合战略新升级

5月5日&#xff0c;“北京大学-知存科技存算一体技术联合实验室”在北京大学微纳电子大厦正式揭牌&#xff0c;北京大学集成电路学院院长蔡一茂、北京大学集成电路学院副院长鲁文高及学院相关负责人、知存科技创始人兼CEO王绍迪、知存科技首席科学家郭昕婕博士及企业研发相关负…...

项目总结(一)docker总结

目录 一、引言 二、docker ------>2.1、docker介绍 ------>2.2、与虚拟机的区别 ------>2.3、Docke基本概念 ------>2.4、Docker内部结构 ------>2.5、Windows上使用docker ------>2.6、Linux上使用Docker ------>2.7、Docker常用命令 ------&g…...

深圳比创达EMC|EMC一站式解决方案:助力电子产品电磁兼容性升级

在当今电子信息技术飞速发展的时代&#xff0c;电磁兼容性&#xff08;EMC&#xff09;问题日益凸显&#xff0c;成为制约电子产品性能和质量的关键因素。为了满足市场对EMC问题的迫切需求&#xff0c;EMC一站式解决方案应运而生&#xff0c;成为解决EMC问题的有效途径。 一、…...

万兆以太网MAC设计(11)完整UDP协议栈仿真

文章目录 前言一、模块接口二、IP模块与ARP模块之间的联系三、整体协议栈仿真总结&#xff1a; 前言 目前除了巨帧处理逻辑之外&#xff0c;所有的准备工作都已经结束了&#xff0c;先进行整体的功能验证。 一、模块接口 所有模块接口皆采用AXIS数据流的形式&#xff0c;其中…...

【牛客】【模板】差分

原题链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 目录 1. 题目描述 2. 思路分析 3. 代码实现 1. 题目描述 2. 思路分析 差分模板。 b[0]a[0]; b[1]a[1]-a[0]; b[2]a[2]-a[1]; ...... b[n-1]a[n-1]-a[n-2]; b[n]a[n]-a[n-1]; 差分标记&#xff1a;b[l]k,b…...

鸿蒙内核源码分析(中断管理篇) | 江湖从此不再怕中断

关于中断部分系列篇将用三篇详细说明整个过程. 中断概念篇 中断概念很多&#xff0c;比如中断控制器&#xff0c;中断源&#xff0c;中断向量&#xff0c;中断共享&#xff0c;中断处理程序等等.本篇做一次整理.先了解透概念才好理解中断过程.用海公公打比方说明白中断各个概念…...

php使用rabbitmq

这里使用的是 php-amqplib composer require php-amqplib/php-amqplib生产端send.php <?phprequire_once "./vendor/autoload.php";use PhpAmqpLib\Connection\AMQPStreamConnection; use PhpAmqpLib\Message\AMQPMessage;//交换机名称 $exc_name exchange.can…...

前端发起网络请求的几种常见方式(XMLHttpRequest、FetchApi、jQueryAjax、Axios)

摘要 前端发起网络请求的几种常见方式包括&#xff1a; XMLHttpRequest (XHR)&#xff1a; 这是最传统和最常见的方式之一。它允许客户端与服务器进行异步通信。XHR API 提供了一个在后台发送 HTTP 请求和接收响应的机制&#xff0c;使得页面能够在不刷新的情况下更新部分内容…...

通过氧气退火增强β-Ga₂O₃二极管.中国科技大学和河北半导体研究所的研究人员在这一特定领域取得了最新重大进展

上图所示&#xff1a;&#xff08;a&#xff09;增加台面有助于提高β-Ga2O3肖特基势垒二极管的阻断电压&#xff08;b&#xff09;。 氧气退火和自对准台面终端使β-Ga2O3二极管进一步走向商业化。 虽然β-Ga2O3电力电子技术已经取得了长足的进步&#xff0c;但仍然存在挑战&…...

C语言猜数字游戏

用C语言实现猜数字游戏&#xff0c;电脑随机给出一个范围内的数字&#xff0c;用户在终端输入数字&#xff0c;去猜大小&#xff1b;对比数字&#xff0c;电脑给出提示偏大还是偏小&#xff1b;不断循环&#xff0c;直到正确 #include <stdio.h> #include <time.h>…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好&#xff0c;欢迎来到《云原生核心技术》系列的第七篇&#xff01; 在上一篇&#xff0c;我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在&#xff0c;我们就像一个拥有了一块崭新数字土地的农场主&#xff0c;是时…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

FFmpeg 低延迟同屏方案

引言 在实时互动需求激增的当下&#xff0c;无论是在线教育中的师生同屏演示、远程办公的屏幕共享协作&#xff0c;还是游戏直播的画面实时传输&#xff0c;低延迟同屏已成为保障用户体验的核心指标。FFmpeg 作为一款功能强大的多媒体框架&#xff0c;凭借其灵活的编解码、数据…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南

&#x1f680; C extern 关键字深度解析&#xff1a;跨文件编程的终极指南 &#x1f4c5; 更新时间&#xff1a;2025年6月5日 &#x1f3f7;️ 标签&#xff1a;C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言&#x1f525;一、extern 是什么&#xff1f;&…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码

目录 一、&#x1f468;‍&#x1f393;网站题目 二、✍️网站描述 三、&#x1f4da;网站介绍 四、&#x1f310;网站效果 五、&#x1fa93; 代码实现 &#x1f9f1;HTML 六、&#x1f947; 如何让学习不再盲目 七、&#x1f381;更多干货 一、&#x1f468;‍&#x1f…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...