Linux命令(7)——uniq命令

1.功能

用于去除有序文件中的重复行并将结果输出到标准输出。uniq经常和sort合用,为了使uniq起作用,所有的重复行必须是相邻的。

2.格式

uniq [选项] [file]

选项说明:

-c,--count:显示行出现的次数
-d,--repeated:仅显示重复出现的行,即出现次数>=2的行,且只打印一次
-D,--all-repeated[=delimit-method]:仅显示重复的行,即出现次数>=2的行,且打印重复行的所有行。其中delimit-method表示对重复行集合的分隔方式,有三种取值,分别为none、prepend和separate。其中none表示不进行分隔,为默认选项,uniq -D等同于uniq --all-repeated=none;prepend表示在每一个重复行集合前面插入一个空行;separate表示在每个重复行集合间插入一个空行。
-f,--skip-fields=N:忽略前N个字段。字段由空白字符(空格符、Tab)分隔。如果您的文档的行被编号,并且您希望比较行中除行号之外的所有内容。如果指定了选项-f 1,那么下面相邻的两行:
1 这是一条线。
2 这是一条线。
将被认为是相同的。如果没有指定-f选项,它们将被认为是唯一的。
-i,--ignore-case:忽略大小写字符的不同
-s,--skip-chars=N:跳过前面N个字符不比较
-u,--unique:只显示唯一的行,即出现次数等于1的行
-w,--check-chars=N:指定每行要比较的前N个字符数
--help:显示帮助信息
--version:显示版本信息

3.常用示例

(1)对无序文件去重无效。 testfile的内容如下:

cat testfile
hello
world
friend
hello
world
hello

直接删除未经排序的文件,将会发现没有任何行被删除:

#uniq testfile  
hello
world
friend
hello
world
hello

(2)uniq结合sort命令,对排序文件去重。

#cat testfile | sort | uniq
friend
hello
world

(3)排序之后删除了重复行,同时在行首位置输出该行重复的次数。

#sort testfile | uniq -c
1 friend
3 hello
2 world

(4)仅显示存在重复的行,并在行首显示该行重复的次数:

#sort testfile | uniq -dc
3 hello
2 world

(5)仅显示不重复的行。

sort testfile | uniq -u
friend

(6)仅显示重复的行,且显示重复行的所有行。

sort testfile | uniq -D
hello
hello
hello
world
world

(7)uniq默认是比较相邻行的所有内容来判断是否重复,我们可以通过选项-w--check-chars=N指定比较前N个字符。比如我们有如下内容的文件test.txt:

apple
application
api

打印前三个字符相同的行:

uniq -w3 -D test.txt
apple
application

参考文献

[1]Linux uniq命令.菜鸟教程 [2]Linux的 uniq 命令详解 [3]为初学者提供的uniq 命令教程及示例 [4]Linux uniq command [5]uniq manual

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏magicsoar

HHVM源码剖析

一、前言 hhvm源码中充满了很多C++11的新特性,并且使用了各种设计模式如工厂,模板方法等,利用智能指针包裹指针,让delete没有肆意的出现 模板,继承,...

24380
来自专栏青玉伏案

设计模式(五): 简单而又不失其重要性的单例模式(Singleton Pattern)

上篇博客我们系统的介绍了三种工厂模式,今天我们就来介绍一下单例模式。单例模式虽然简单,但是还是比较重要的,是常用设计模式之一。在之前的博客《Objective-...

21050
来自专栏JMCui

Linux 学习记录 四(Bash 和 Shell scirpt).

一、什么是 Shell?        狭义的shell指的是指令列方面的软件,包括基本的Linux操作窗口Bash等,广义的shell则包括 图形接口的软件,...

42340
来自专栏阮一峰的网络日志

Javascript 严格模式详解

一、概述 除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode)。顾名思义,这种模式使得Javascript在更...

29980
来自专栏博客园

Asp.Net Web API(三)

    在Asp.Net Web API中,一个控制器就是一个处理HTTP请求的类,控制器的public方法就被叫做action方法或简单的Action。当We...

18250
来自专栏PHP在线

8个与安全相关的PHP函数

1. mysql_real_escape_string() 这个函数对于在PHP中防止SQL注入攻击很有帮助,它对特殊的字符,像单引号和双引号,加...

362120
来自专栏流柯技术学院

Loadrunner中web_find和web_reg_find函数的使用与区别

总结一下Loadrunner中的检查点函数,主要介绍两个函数:web_find()和web_reg_find();这两个函数均用于内容的查找,但两者也有本质的区...

23120
来自专栏Pythonista

python全栈考试

a.实现用户输入用户名和密码,当用户名为 seven 且 密码为 123 时,显示登陆成功,否则登陆失败!

23020
来自专栏用户2442861的专栏

linux sed命令使用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haluoluo211/article/d...

10620
来自专栏Linux驱动

编译make的出错提示解决方案

编译出错笔记: start.s:20: Error: no such instruction: `ldr r0,=WTCON' 错误:没有这样的指令 解决...

204100

扫码关注云+社区

领取腾讯云代金券