【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

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

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

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

相关文章

使用Express+Node.js搭建网站

Express是一个基于Node.js平台的快速、开放、极简的Web开发框架。它的作用是专门用来创建Web服务器&#xff0c;与Node.js内置的http模块功能相似&#xff0c;但更为简便和高效。 Express中文官网&#xff1a;Express - 基于 Node.js 平台的 web 应用开发框架 - Express中文文…

Vulnhub项目:NAPPING: 1.0.1

1、靶机介绍 靶机地址&#xff1a;Napping: 1.0.1 ~ VulnHub 2、渗透过程 老规矩&#xff0c;先探测&#xff0c;靶机ip&#xff1a;192.168.56.152 本机ip&#xff1a;192.168.56.146 来看一看靶机开放哪些端口&#xff0c;nmap一下 nmap -sS -sV -A -T5 192.168.56.152 开…

k8s ReplicaSet

ReplicaSet 是替代 ReplicationController 的&#xff0c;ReplicaSet 的行为与 ReplicationController 完全相同&#xff0c; 但pod 选择器的表达能力更强。 ReplicaSet 和 ReplicationController 的区别&#xff1a; ReplicationController 的标签选择器只允许包含某个标签的…

基于SpringBoot的大学生心理咨询系统

项目介绍 基于Spring Boot技术栈构建的大学生心理咨询系统&#xff0c;旨在提供一个全方位、定制化的心理健康管理平台。系统采用前后端分离架构&#xff0c;后端利用Spring Boot框架进行深度二次开发&#xff0c;以实现高效稳定的服务端逻辑处理和数据交互&#xff1b;前端界…

Dynamics 365: 从0到1了解如何创建Custom API(3) - Custom API的调试之插件调试

对于Custom API的调试&#xff0c;主要有三种方式&#xff1a; 插件代码中添加log插件调试单元测试 对于这三种方式&#xff0c;说白了也就相当于两种&#xff0c;第一种打log&#xff0c;这种方式很多时候我们是在插件调试突然不好使的时候&#xff0c;或者在不调试时还想看…

7-zip下载、安装

7-Zip 官方中文网站 (sparanoid.com) 7-Zip - 程序下载 (sparanoid.com)

【Linux】文件内容相关的命令,补充:管道符

1、查看文件内容 &#xff08;1-1&#xff09;查看文件内容&#xff1a;cat&#xff0c;tac&#xff0c;head&#xff0c;tail 查看文件内容cat 文件名查看文件内容并显示行号cat -n 文件名倒着查看文件内容&#xff08;从最后一行开始&#xff09;tac 文件名查看文件前10行…

latex参考文献引用网址,不显示网址问题

以引用UCI数据集为例 1、加入宏包 \usepackage{url} 2、在参考文献bib文件中加入网址文献 misc{UCI, author {{D. Dua, E. Karra Taniskidou}}, year {2024}, title {UCI Machine Learning Repository}, howpublished {\url{http://archive.ics.uci.edu/ml}} } 完成&#x…

【机器学习系统的构建】从模型开发的过程讲清楚K-Fold 交叉验证 (Cross-Validation)的原理和应用

0、前言 最近在学习集成学习的时候了解到了k折交叉验证&#xff0c;其实在之前学习吴恩达老师的课程中也学过交叉验证&#xff0c;但是当时也不是很明白。这次借着自己的疑问以及网上搜找资料&#xff0c;终于把交叉验证给弄明白了。 在弄清楚前&#xff0c;我有这样几个疑问…

【typescript 小秘籍 - 类型自动推导】

今天发现个typescript的小技巧&#xff0c;原来在vscode里面 typescript是可以根据数据&#xff0c;自动推导其类型的&#xff0c;这样就不用自己去手敲定义了。比如 鼠标移动到person上&#xff0c;可以看到 其自动推导了person的类型 然后直接复制下来 直接使用即可。

Python运维-日志记录、FTP、邮件提醒

本章目录如下&#xff1a; 五、日志记录 5.1、日志模块简介 5.2、logging模块的配置与使用 六、搭建FTP服务器与客户端 6.1、FTP服务器模式 6.2、搭建服务器 6.3、编写FTP客户端程序 七、邮件提醒 7.1、发送邮件 7.2、接收邮件 7.3、实例&#xff1a;将报警信息实时…

基于Flask的岗位就业可视化系统(一)

&#x1f31f;欢迎来到 我的博客 —— 探索技术的无限可能&#xff01; &#x1f31f;博客的简介&#xff08;文章目录&#xff09; 前言 本项目综合了基本数据分析的流程&#xff0c;包括数据采集&#xff08;爬虫&#xff09;、数据清洗、数据存储、数据前后端可视化等 推荐…

ChatGPT-Next-Web漏洞利用分析(CVE-2023-49785)

1. 漏洞介绍 ​ 日常网上冲浪&#xff0c;突然粗看以为是有关Chat-GPT的CVE披露出来了&#xff0c;但是仔细一看原来是ChatGPT-Next-Web的漏洞。漏洞描述大致如下&#xff1a;&#xff08;如果有自己搭建了还没更新的速速修复升级防止被人利用&#xff0c;2.11.3已经出来了&am…

个人IP打造孵化运营产业链商业计划书

【干货资料持续更新&#xff0c;以防走丢】 个人IP打造孵化运营产业链商业计划书 部分资料预览 资料部分是网络整理&#xff0c;仅供学习参考。 PPT共90页&#xff08;完整资料包含以下内容&#xff09; 目录 个人IP运营方案&#xff1a; 1. 个人IP定位与构建 1.1 人格画像构…

《Python编程从入门到实践》day21

# 昨日知识点回顾 设置背景颜色 在屏幕中央绘制飞船 # 今日知识点学习 12.5 重构&#xff1a;方法_check_events()和_update_screen() 12.5.1 方法_check_events() import sys import pygame from Settings import Settings from Ship import Shipclass AlienInvasion:"…

基于FPGA的累加器及数码管显示VHDL代码Quartus仿真

名称&#xff1a;基于FPGA的累加器及数码管显示VHDL代码Quartus仿真&#xff08;文末获取&#xff09; 软件&#xff1a;Quartus 语言&#xff1a;VHDL 代码功能&#xff1a; 累加器及数码管显示 1、可以通过按键输入1~9 2、数字输入后进行累加&#xff0c;将累加结果显示…

【计算机科学速成课】笔记三

文章目录 17.集成电路真空管时代晶体管时代集成电路时代印刷电路板时代光刻时代 17.集成电路 Over the past six episodes, we delved into software, 过去 6 集我们聊了软件 \N 从早期编程方式到现代软件工程 from early programming efforts to modern software engineerin…

部署YUM仓库以及NFS共享服务

YUM仓库部署 一.YUM概述 YUM仓库源是一种软件包管理工具&#xff0c;用于在Linux系统上安装、更新和删除软件包。YUM仓库源包含了软件包的元数据信息和实际的软件包文件。用户可以通过配置YUM仓库源&#xff0c;从中下载和安装软件包。 常见的YUM仓库源包括&#xff1a; 本…

截图工具Snipaste:不仅仅是截图,更是效率的提升

在数字时代&#xff0c;截图工具已成为我们日常工作和生活中不可或缺的一部分。无论是用于工作汇报、学习笔记&#xff0c;还是日常沟通&#xff0c;一款好用的截图工具都能大大提升我们的效率。今天&#xff0c;我要向大家推荐一款功能强大且易于使用的截图软件——Snipaste。…

强大的禄得可转债自定义因子轮动系统完成,可转债三低为例子

经过几天的测试终于完成了可转债自定义因子轮动&#xff0c;超过1000行的源代码 我提供了服务器的数据支持自动api下载&#xff0c;我给大家维护数据 网页 http://120.78.132.143:8023/ 录得数据支持http://120.78.132.143:8023/lude_data_app api数据支持&#xff0c;我提供…