【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 groups
                                 with 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.mfbz.cn/a/599956.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数组折半法查找数据(C语言)

一、N-S流程图&#xff1b; 二、运行结果&#xff1b; 三、源代码&#xff1b; # define _CRT_SECURE_NO_WARNINGS # include <stdio.h> //定义数据&#xff1b; #define N 15int main() {//初始化变量值&#xff1b;int a[N], i, top, bott, loca, flag 1, sign, numb…

使用macof发起MAC地址泛洪攻击

使用macof发起MAC地址泛洪攻击 MAC地址泛洪攻击原理&#xff1a; MAC地址泛洪攻击是一种针对交换机的攻击方式&#xff0c;目的是监听同一局域网中用户的通信数据。交换机的工作核心&#xff1a;端口- MAC地址映射表。这张表记录了交换机每个端口和与之相连的主机MAC地址之间…

Map集合的实现类~HashMap

存储结构&#xff1a;哈希表 键重复依据是hashCode和equals方法&#xff08;键不能重复&#xff09; 添加&#xff1a; 先创建Student类&#xff0c;那么往HashSet添加的就是Student对象作为键值&#xff0c;后面的作为值 删除&#xff1a; 判断&#xff1a; 遍历&#xff1a…

Parts2Whole革新:多参照图定制人像,创新自定义肖像生成框架!

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享&#xff0c;与你一起了解前沿深度学习信息&#xff01; Parts2Whole革新&#xff1a;多参照图定制人像&#xff0c;创新自定义肖像生成框架&#xff01; 引言&#xff1a;探索多条件人像生成的新篇章 在数字内容创作…

【MATLAB源码-第204期】基于matlab的语音降噪算法对比仿真,谱减法、维纳滤波法、自适应滤波法;参数可调。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 语音降噪技术的目的是改善语音信号的质量&#xff0c;通过减少或消除背景噪声&#xff0c;使得语音更清晰&#xff0c;便于听者理解或进一步的语音处理任务&#xff0c;如语音识别和语音通讯。在许多实际应用中&#xff0c;如…

深度学习之基于YOLOv5智慧交通拥挤预警检测系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 随着城市化进程的加速和人口规模的不断增长&#xff0c;交通拥挤问题日益严重。传统的交通拥挤预警方…

C++笔记-makefile添加第三方.h和.cpp及添加.h和lib库模板

目文件结构如下所示时&#xff1a; project/├── main.cpp├── test.cpp├── DIRA/│ ├── A.cpp│ └── A.h├── DIRBLIB/│ └── libB.so└── include/└── B.h Makefile如下所示&#xff1a; # 编译器设置 CXX g CXXFLAGS -stdc11 -Wall# 目录…

互联网十万个为什么之什么是云计算

云计算是一种通过互联网提供计算资源和服务的技术。它允许用户随时随地访问和使用云平台上的数据、软件和硬件资源。在数字化时代&#xff0c;互联网已经成为基础设施。云计算使得数据中心能够像一台计算机一样去工作。通过互联网将算力以按需使用、按量付费的形式提供给用户&a…

2024年Q1脱毛膏线上市场(京东天猫淘宝)销量销额排行榜

鲸参谋监测的2024年Q1季度线上电商平台&#xff08;天猫淘宝京东&#xff09;脱毛膏行业销售数据已出炉&#xff01; 根据鲸参谋数据显示&#xff0c;今年Q1季度在线上电商平台&#xff08;天猫淘宝京东&#xff09;&#xff0c;脱毛膏的销量累计接近220万件&#xff0c;环比增…

基于51单片机的ADC0804的电压表设计(仿真+源码+设计资料)

目录 1、前言 2、资料内容 3、仿真图 4、程序 资料下载地址&#xff1a;基于51单片机的ADC0804的电压表设计&#xff08;仿真源码设计资料&#xff09; 1、前言 最近看网上有很少的ADC0804的设计了&#xff0c;都由0809代替&#xff0c;但是有个别因为成本原因和学校课…

使用Express+Node.js搭建网站

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

25考研英语长难句Day02

25考研英语长难句Day02 【a.词组】【b.断句】 如果你是你讲话对象中的一员&#xff0c;你就能了解你们大家共同的经历和问题&#xff0c;你也可以顺便评论一下食堂里难吃的食物或董事长臭名昭著的领带品味。 【a.词组】 单词解释addressv. 演说&#xff0c; 演讲&#xff1b;…

一堆自定义C#代码片段,让你开发效率飞涨

SharpBoxes 是一款用于 Visual Studio 的扩展&#xff0c;作者为本人&#xff1b; 该扩展旨在提高开发效率。它为开发人员提供了一组日常使用频率较高的代码片段&#xff0c;让你在编写代码时能够更快地插入常用的代码段。通过安装这个扩展&#xff0c;你可以使用快捷键轻松插…

Django 4.x 智能分页get_elided_page_range

Django智能分页 分页效果 第1页的效果 第10页的效果 带输入框的效果 主要函数 # 参数解释 # number: 当前页码&#xff0c;默认&#xff1a;1 # on_each_side&#xff1a;当前页码前后显示几页&#xff0c;默认&#xff1a;3 # on_ends&#xff1a;首尾固定显示几页&#…

【在线OJ】Vue创建OJ管理系统

一、创建项目 vue ui命令创建项目 项目创建完成后来到项目 二、导航栏 首先创建一个根页面&#xff0c;让他展示在页面上 创建之后来到路由配置界面 然后安装ElementUI&#xff0c;来到官网找到导航栏 复制代码后粘贴到刚才创建的vue文件里&#xff0c;启动项目&#xff…

力扣:62. 不同路径

62. 不同路径 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。 问总共有多少条不同的路径&…

SolidWorks进行热力学有限元分析二、模型装配

1.先打开软件&#xff0c;新建装配体 2.选中你要装配的零件&#xff0c;直接导入就行 3.鼠标点击左键直接先放进去 4.开始装配&#xff0c;点配合 5.选择你要接触的两个面&#xff0c;鼠标右键确定&#xff0c;然后把剩下的面对齐一下就行了 6.搞定

《十九》Qt Http协议及实战

前言 本篇文章来给大家讲解QT中的Http协议&#xff0c;Http协议主要用于网络中数据的请求和响应&#xff0c;那么这篇文章将给大家讲解一下这个协议。 一、HTTP概述 HTTP&#xff08;超文本传输协议&#xff09;是互联网上应用最为广泛的协议之一&#xff0c;它定义了客户端…

[开发|鸿蒙] 鸿蒙OS开发环境搭建(笔记,持续更新)

搭建开发环境流程&#xff1a; https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V2/installation_process-0000001071425528-V2 鸿蒙DevEco Studio 3.1.1 Release仅支持windows和mac系统 运行环境要求 为保证DevEco Studio正常运行&#xff0c;建议电脑配置…

事务的使用 @Transactional

更新操作多个数据表的时候需要使用到事务 事务&#xff1a;要么都执行&#xff0c;要么都不执行。 1.Transactional 如果有异常&#xff0c;只有RunTimeException和Error时&#xff0c;事务才会生效&#xff0c;否则事务不会生效&#xff0c;需要手动开启事务currentTransacti…
最新文章