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

使用uniq的时候要注意以下二点
1、对文本操作时,它一般会和sort命令进行组合使用,因为uniq 不会检查重复的行,除非它们是相邻的行。如果您想先对输入排序,使用sort -u。
2、对文本操作时,若域中为先空字符(通常包括空格以及制表符),然后非空字符,域中字符前的空字符将被跳过。

语法
uniq [-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]
参数:
-c, --count 在每行前显示该行重复出现的次数。
-d, --repeated 仅显示重复出现的行列。
-D, --all-repeated 只输出重复的行,不过有几行输出几行
-f, --skip-fields=N 忽略比较指定的栏位。 -f 忽略的段数,-f 1 忽略第一段
-i, --ignore-case 不区分大小写
-s, --skip-chars=N 忽略比较指定的字符,忽略后面多少个字符
-u, --unique 仅显示出一次的行列。(去除重复的后,全部显示出来,根mysql的distinct功能上有点像)
-w, --check-chars=N 指定要比较的字符。对每行第N 个字符以后的内容不作对照
--help 显示帮助。
--version 显示版本信息。
[输入文件] 指定已排序好的文本文件。如果不指定此项,则从标准读取数据;
[输出文件] 指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备(显示终端)。

实例

文件testfile中第 2、3、5、6、7、9行为重复的行,使用 uniq 命令删除重复的行,可使用以下命令:
uniq testfile

testfile中的原有内容为:
$ cat testfile     #原有内容

test 30

test 30

test 30
Hello 95
Hello 95
Hello 95
Hello 95
Linux 85
Linux 85

使用uniq 命令删除重复的行后,有如下输出结果:
$ uniq  testfile    #删除重复行后的内容
test 30
Hello 95
Linux 85

检查文件并删除文件中重复出现的行,并在行首显示该行重复出现的次数。使用如下命令:
uniq -c testfile
结果输出如下:
$ uniq  -c   testfile   #删除重复行后的内容
3 test 30 #前面的数字的意义为该行共出现了3次
4 Hello 95 #前面的数字的意义为该行共出现了4次
2 Linux 85 #前面的数字的意义为该行共出现了2次

当重复的行并不相邻时,uniq 命令是不起作用的,即若文件内容为以下时,uniq 命令不起作用:

$ cat  testfile1    # 原有内容

test 30
Hello 95
Linux 85

test 30
Hello 95
Linux 85

test 30
Hello 95
Linux 85

这时我们就可以使用 sort:
$ sort  testfile1 | uniq

Hello 95
Linux 85

test 30

统计各行在文件中出现的次数:
$ sort  testfile1 | uniq  -c

3 Hello 95
3 Linux 85
3 test 30

在文件中找出重复的行:
$ sort testfile1 | uniq -d

Hello 95
Linux 85

test 30

用uniq来处理文件重复数据--交集,差集
经常有这样的需求:两个文本文件要求取重复的行或只取不重复的,简单的情况下用sort和uniq来处理是非常方便的:
利用现存两个文件,生成一个新的文件。

1、取出两个文件的并集(重复的行只保留一份)
cat file1 file2 | sort | uniq

2、取出两个文件的交集(只留下同时存在于两个文件中的文件,重复行)
cat file1 file2 | sort | uniq -d

3、删除交集,留下其他的行(非重复行)
cat file1 file2 | sort | uniq -u

Linux--uniq 命令(检查和处理重复行的数据)的更多相关文章

  1. [转]linux uniq 命令详解

    转自:http://blog.csdn.net/tianmohust/article/details/6997683 uniq 命令   文字 uniq 是LINUX命令 用途 报告或删除文件中重复的 ...

  2. Linux uniq 命令

    Linux uniq 命令  Linux 命令大全 Linux uniq 命令用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用. uniq 可检查文本文件中重复出现的行列. 语法 ...

  3. linux uniq 命令实用手册

    Linux uniq 命令用于处理文本内容中的重复行. 这里我们只介绍其常用参数,其完整用法可参见man uniq. 例如,我们有如下文件内容: >>> cat log.txt __ ...

  4. Linux 命令 - uniq: 通知或忽略重复行

    给定一个已排好序的文件,uniq 会删除重复行并将结果输出到标准输出中.uniq 通常与 sort 结合使用以删除 sort 输出内容中的重复行. 命令格式 uniq [OPTION]... [INP ...

  5. Linux合并文件、去除重复行的命令

    Linux合并文件命令: awk '{printf("%s\n",$0)}' YQ-*101?.txt >  123.txt   linux去除重复行命令:cat YQ-10 ...

  6. Linux uniq命令

    200 ? "200px" : this.width)!important;} --> 介绍 uniq命令是一个文本去重命令,它能对标准输入和文本文件进行去重操作,并且能将结 ...

  7. Linux uniq命令详解

    uniq常见命令参数 用法:uniq [选项]... [文件] 从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出. 不附加任何选项时匹配行将在首次出现处被合并. 长选项必须使用的参数 ...

  8. linux uniq命令用法

    uniq命令: 对指定的ASCII文件或标准输入进行唯一性检查,以判断文本文件中重复出现的行,常用于分析日志:查看tcp各个状态连接数,ip或域名连接数排名等等场景,一般与 sort 命令结合使用. ...

  9. linux sed命令(擅长输出行)(转)

    linux命令总结sed命令详解 Sed 简介 sed 是一种新型的,非交互式的编辑器.它能执行与编辑器 vi 和 ex 相同的编辑任务.sed 编辑器没有提供交互式使用方式,使用者只能在命令行输入编 ...

  10. Linux中的uniq命令(去掉重复项,输出重复项)

    ls /bin /usr/bin | sort | uniq | less 上面这条命令的实际效果是: 获得 ls /bin /usr/bin 的 output 将上述 output 进行 sort ...

随机推荐

  1. 开发人员常用Docker指令

    什么是 Docker? Docker 是一个开源的容器化平台,用于构建.打包和运行应用程序.它允许开发者将应用程序及其依赖项打包成一个独立的可移植容器,可以在任何环境中运行,无论是开发环境.测试环境还 ...

  2. Java-Enum常量特定方法

    OnJava8-Enum-常量特定方法 用枚举实现责任链模式 责任链(Chain Of Responsibility)设计模式先创建了一批用于解决目标问题的不同方法,然后将它们连成一条"链& ...

  3. linux-目录树

  4. Go-选择排序

    // SelectionSort 选择排序 // 思路: // 1. 遍历整个元素集合,将最小值取出追加到一个有序的元组 // 2. 重复遍历剩余元素集合,取出最小值追加到一个有序元组 // 选择排序 ...

  5. Linux_sqlcmd或者是Cloudquery连接SQLSERVER2012的问题解决

    Linux_sqlcmd或者是Cloudquery连接SQLSERVER2012的问题解决 背景 最近想使用shell脚本给SQLServer数据库插入数据,但是发现了报错 同时进行CLoudquer ...

  6. [转帖]谁动了我的 CPU 频率 —— CPU 性能之迷 Part 2

    https://blog.mygraphql.com/zh/notes/low-tec/kernel/cpu-frequency/ 目录: 为何有本文 什么是动态 CPU 频率 什么是 p-state ...

  7. [转帖]Nginx 反向代理解决跨域问题

    https://juejin.cn/post/6995374680114741279 编写代码两分钟,解决跨域两小时,我吐了. 如果对跨域还不了解的朋友,可以看这篇:[基础]HTTP.TCP/IP 协 ...

  8. [转帖]华为FusionSphere虚拟化解决方案介绍

    https://huaweicloud.csdn.net/63566589d3efff3090b5d243.html?spm=1001.2101.3001.6650.2&utm_medium= ...

  9. [转帖]resin的安装与配置

    1.安装jdk 之前装过了,就不做演示了 vim /etc/profile   //注意java的配置文件 JAVA_HOME=/usr/local/jdk1.8/ JAVA_BIN=/usr/loc ...

  10. Kafka学习之四_Grafana监控相关的学习

    Kafka学习之四_Grafana监控相关的学习 背景 想一并学习一下kafaka的监控. 又重新开始学习grafana了: 下载地址: https://grafana.com/grafana/dow ...