linux命令(12)uniq去重

转载地址:http://blog.51yip.com/shell/1022.html

实例详细说明linux下去除重复行命令uniq

一,uniq干什么用的

文本中的重复行,基本上不是我们所要的,所以就要去除掉。linux下有其他命令可以去除重复行,但是我觉得uniq还是比较方便的一个。使用uniq的时候要注意以下二点

1,对文本操作时,它一般会和sort命令进行组合使用,因为uniq 不会检查重复的行,除非它们是相邻的行。如果您想先对输入排序,使用sort -u。

2,对文本操作时,若域中为先空字符(通常包括空格以及制表符),然后非空字符,域中字符前的空字符将被跳过

二,uniq参数说明

 1 [[email protected] ~]$ uniq --help
 2 用法:uniq [选项]... [文件]
 3 从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出。
 4
 5 不附加任何选项时匹配行将在首次出现处被合并。
 6
 7 长选项必须使用的参数对于短选项时也是必需使用的。
 8  -c, --count              //在每行前加上表示相应行目出现次数的前缀编号
 9  -d, --repeated          //只输出重复的行
10  -D, --all-repeated      //只输出重复的行,不过有几行输出几行
11  -f, --skip-fields=N     //-f 忽略的段数,-f 1 忽略第一段
12  -i, --ignore-case       //不区分大小写
13  -s, --skip-chars=N      //根-f有点像,不过-s是忽略,后面多少个字符 -s 5就忽略后面5个字符
14  -u, --unique            //去除重复的后,全部显示出来,根mysql的distinct功能上有点像
15  -z, --zero-terminated   end lines with 0 byte, not newline
16  -w, --check-chars=N      //对每行第N 个字符以后的内容不作对照
17  --help              //显示此帮助信息并退出
18  --version              //显示版本信息并退出

三,测试文本文件uniqtest

 1     this is a test
 2     this is a test
 3     this is a test
 4     i am tank
 5     i love tank
 6     i love tank
 7     this is a test
 8     whom have a try
 9     WhoM have a try
10     you  have a try
11     i want to abroad
12     those are good men
13     we are good men 

四,实例详解

从例子中我们可以看出,uniq的一个特性,检查重复行的时候,只会检查相邻的行。重复数据,肯定有很多不是相邻在一起的。

 [[email protected] mytest]$ uniq -c uniqtest
     3 this is a test
     1 i am tank
     2 i love tank
     1 this is a test           //和第一行是重复的
     1 whom have a try
     1 WhoM have a try
     1 you  have a try
     1 i want to abroad
     1 those are good men
     1 we are good men  

这样就可以解决上个例子中提到的问题

    [[email protected] mytest]$ sort uniqtest |uniq -c
     1 WhoM have a try
     1 i am tank
     2 i love tank
     1 i want to abroad
     4 this is a test
     1 those are good men
     1 we are good men
     1 whom have a try
     1 you  have a try  

uniq -d 只显示重复的行

[[email protected] mytest]$ uniq -d -c uniqtest
 3 this is a test
 2 i love tank 

uniq -D 只显示重复的行,并且把重复几行都显示出来。他不能和-c一起使用

[[email protected] mytest]$ uniq -D uniqtest
this is a test
this is a test
this is a test
i love tank
i love tank 

在这里those只有一行,显示的却是重复了,这是因为,-f 1 忽略了第一列,检查重复从第二字段开始的。

[[email protected] mytest]$ uniq -f 1 -c uniqtest
 3 this is a test
 1 i am tank
 2 i love tank
 1 this is a test
 2 whom have a try
 1 you  have a try
 1 i want to abroad
 2 those are good men   //只有一行,显示二行

检查的时候,不区分大小写

[[email protected] mytest]$ uniq -i -c uniqtest
 3 this is a test
 1 i am tank
 2 i love tank
 1 this is a test
 2 whom have a try  //一个大写,一个小写
 1 you  have a try
 1 i want to abroad
 1 those are good men
 1 we are good men

检查的时候,不考虑前4个字符,这样whom have a try 就和 you have a try 就一样了。

[[email protected] mytest]$ uniq -s 4 -c uniqtest
3 this is a test
1 i am tank
2 i love tank
1 this is a test
3 whom have a try   //根上一个例子有什么不同
1 i want to abroad
1 those are good men
1 we are good men 

去重复的项,然后全部显示出来

    [[email protected] mytest]$ uniq -u uniqtest
    i am tank
    this is a test
    whom have a try
    WhoM have a try
    you  have a try
    i want to abroad
    those are good men
    we are good men  

对每行第2个字符以后的内容不作检查,所以i am tank 根 i love tank就一样了。

[[email protected] mytest]$ uniq -w 2 -c uniqtest
 3 this is a test
 3 i am tank
 1 this is a test
 1 whom have a try
 1 WhoM have a try
 1 you  have a try
 1 i want to abroad
 1 those are good men
 1 we are good men 
时间: 2024-10-13 05:38:36

linux命令(12)uniq去重的相关文章

Linux命令总结--uniq命令

Linux uniq 命令 Linux 命令大全 Linux uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用. uniq 可检查文本文件中重复出现的行列. 语法 uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件] 参数: -c或--count 在每列旁边显示该行重复出现的次数. -d或--repeated 仅显示重复出现的行列. -f<栏

linux命令-sed,uniq,cut,wc

sort sort 命令对 File 参数指定的文件中的行排序,并将结果写到标准输出.如果 File 参数指定多个文件,那么 sort 命令将这些文件连接起来,并当作一个文件进行排序. sort语法 [[email protected] ~]# sort [-fbMnrtuk] [file or stdin] 选项与参数: -f :忽略大小写的差异,例如 A 与 a 视为编码相同: -b :忽略最前面的空格符部分: -M :以月份的名字来排序,例如 JAN, DEC 等等的排序方法: -n :使

每天一个linux命令12之top

top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.下面详细介绍它的使用方法.top是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最"敏感"的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序:而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中

linux命令12

进程的属性 进程ID(PID):是唯一的数值,用来区分进程 父进程的父进程的ID(PPID) 启动进程的用户ID(UID)和所归属的组(GID) 进程状态:状态分为运行R.休眠S.僵尸Z 进程执行的优先级 进程所连接的终端名 进程资源占用:比如占用资源大小(内存.CPU 占用量) 对于linux进程的管理,是通过进程管理工具实现的,比如:ps.kill等 ps  top 管理进程 ps为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的:如果想对进程时间监控,应该用top工具. ps

linux命令 sort文本去重

对于sort 可以输出 不重复的字段的用法 sort -u <taskfile> 扩展 命令 sortx.sh #!/bin/bash /bin/sort -u $1 -o $1 此命令扩展 的意图 去除指定的文件中重复的单字 并写回原文件 这个命令对于基于文本处理并作模型构建的同学有方便之处 不必要自己写去重工具了

Linux命令:uniq

uniq命令简介: 此个命令读取输入文件,并比较相邻的行. 1.命令格式: uniq [OPTION]... [INPUT [OUTPUT]] 2.命令功能: 第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的.该命令加工后的结果写到输出文件中.输入文件和输出文件必须不同.如果输入文件用"-  "表示,则从标准输入读取. 3.命令参数: – c 显示输出中,在每行行首加上本行在文件中出现的次数.它可取代- u和- d选项. – d 只显示重复行. – u 只显示文

日志快速筛选 之 linux命令grep|uniq|wc|awk

以前我个人的观念是,在线上运行的东西尽量不要记什么流水日志. 但是后来我变了,发现在线上记日志是一个绝对有必要的东西,尤其是在当下很流行的微服务的推动下,没有日志的帮助,犹如一个睁眼瞎,排查问题基本靠猜,这可不行. 那就打印记录每次的访问日志,尤其是访问接口时的参数及返回数据和耗费时间等,这是对自己将问题抛给上层及性能优化的依据.但是日志量应该是非常大的,一定要注意及时清理. 那么问题来了,当发现问题时,如何快速定位到错误的地方就很重要了. 日志样例如下(某次访问的产生的日志): [2017-0

Linux命令之 uniq

uniq uniq 命令可以去除排序过的文件中的重复行,因此 uniq 经常和 sort 合用.也就是说,为了使 uniq 起作用,所有的重复行必须是相邻的.详细看例一. [email protected]:~/shell#uniq  -[icu] 选项与参数: -i:    忽略大小写字符的不同; -c :    进行计数 -u :    只显示唯一的行 -d:   只显示有重复的行 -s  N:    忽略前面的N个符 例一: #file文件内容 [email protected]:~/sh

linux 命令(12) tar

服务器迁移,因此需要把自己虚机上的文件copy到本地,由于文件太大,故而进行压缩,复习了tar命令 1:tar 介绍 -c: 新建打包文件,可以搭配 -v 来查看过程中被打包的文件名(fileName) -x:解打包或解压缩的功能,可以搭配 -C(大写)在特定的目录解开 -t:查看打包文件的内容含有那些文件名,重点在查看文件名 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的参数是根据需要在压缩

Linux命令之uniq

uniq 去除重复行 -c 去除重复行,并统计每行出现的次数-d 只显示重复行 -u 只显示唯一的行 uniq只能去除连续出现的重复行,所以需要sort排序后使用 查看测试文件内容:[[email protected] tmp]# cat uniq.txt root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinroot:x:0:0:root:/ro