linux uniq命令用法

uniq命令:

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

命令格式:

uniq [选项]... [文件1] [文件2]

uniq从已经排好序的文本文件file1中删除重复的行,输出到标准输出或file2,常作为过滤器,配合管道试压。在使用uniq命令前,必须确保操作的文本文件已经sort排序了,若不带参数运行uniq,将删除重复的行。

常见参数:

[[email protected] ~]# uniq --help

用法:uniq [选项]... [文件]
从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出。

不附加任何选项时匹配行将在首次出现处被合并。

长选项必须使用的参数对于短选项时也是必需使用的。
-c, --count 在每行前加上表示相应行目出现次数的前缀编号
-d, --repeated 只输出重复的行,2次或2次以上的。
-D, --all-repeated[=delimit-method 显示所有重复的行
delimit-method={none(default),prepend,separate}
以空行为界限
-f, --skip-fields=N 比较时跳过前N 列
-i, --ignore-case 在比较的时候不区分大小写
-s, --skip-chars=N 比较时跳过前N 个字符
-u, --unique 只显示唯一的行
-z, --zero-terminated 使用‘\0‘作为行结束符,而不是新换行
-w, --check-chars=N 对每行第N 个字符以后的内容不作对照
--help 显示此帮助信息并退出
--version 显示版本信息并退出

若域中为先空字符(通常包括空格以及制表符),然后非空字符,域中字符前的空字符将被跳过。

提示:uniq 不会检查重复的行,除非它们是相邻的行。
如果您想先对输入排序,使用没有uniq 的"sort -u"。

测试:

不加参数只对相邻的相同行内容去重

[[email protected] ~]# cat qc.log
192.168.43.117
192.168.43.119
192.168.43.118
192.168.43.118
192.168.43.117
192.168.43.117
192.168.43.119
192.168.43.110
[[email protected] ~]# uniq qc.log
192.168.43.117
192.168.43.119
192.168.43.118
192.168.43.117
192.168.43.119
192.168.43.110

通过sort让重复的行相邻:

[[email protected] ~]# sort qc.log
192.168.43.110
192.168.43.117
192.168.43.117
192.168.43.117
192.168.43.118
192.168.43.118
192.168.43.119
192.168.43.119

uniq配合sort来去重:

[[email protected] ~]# sort qc.log |uniq
192.168.43.110
192.168.43.117
192.168.43.118
192.168.43.119
[[email protected] ~]# sort -u qc.log
192.168.43.110
192.168.43.117
192.168.43.118
192.168.43.119

当然我们也可以通sort -u file实现去重

去重计数:

[[email protected] ~]# sort qc.log |uniq -c
      1 192.168.43.110
      3 192.168.43.117
      2 192.168.43.118
      2 192.168.43.119
[[email protected] ~]# sort qc.log
192.168.43.110
192.168.43.117
192.168.43.117
192.168.43.117
192.168.43.118
192.168.43.118
192.168.43.119
192.168.43.119

查看重复的项:

[[email protected] ~]# sort qc.log |uniq -d
192.168.43.117
192.168.43.118
192.168.43.119

查看所有重复的项:

[[email protected] ~]# sort qc.log |uniq -D
192.168.43.117
192.168.43.117
192.168.43.117
192.168.43.118
192.168.43.118
192.168.43.119
192.168.43.119

不区分大小写,去除重复的项:

[[email protected] ~]# cat qc1.log
appleAPple
BANAN
banan
grape
orange
Orangebqh  jywbqh1 jyw
[[email protected] ~]# uniq -i qc1.log
apple
BANAN
grape
orangebqh  jywbqh1 jyw

跳过第一列:

[[email protected] ~]# uniq -f1 qc1.log
apple
bqh  jywbqh1 jyw

跳过每行的第一个字符:

[[email protected] ~]# uniq -s1 qc1.log
apple
APple
BANAN
banan
grape
orange
bqh  jyw
bqh1 jyw

案例:处理一下qc2.log文件内容,将域名取出来并根据域名进行计数排序处理。

[[email protected] ~]# cat  qc2.log
http://www.baidu.com
http://www.xiaobai.com
http://www.etiantian.org
http://www.jyw.com
http://www.jyw.com
http://www.xiaobai.com
http://www.etiantian.org
http://www.jyw.com
http://www.baidu.com
http://www.baidu.com
http://www.jyw.com
http://www.etiantian.org
[[email protected] ~]# awk -F / ‘{print $3}‘ qc2.log|sort|uniq -c|sort -r
      4 www.jyw.com
      3 www.etiantian.org
      3 www.baidu.com
      2 www.xiaobai.com

方法二:cut方法

[[email protected] ~]# cut -d / -f3 qc2.log |sort -r|uniq -c
      2 www.xiaobai.com
      4 www.jyw.com
      3 www.etiantian.org
      3 www.baidu.com
[[email protected] ~]# cut -d / -f3 qc2.log |sort -r|uniq -c|sort -r
      4 www.jyw.com
      3 www.etiantian.org
      3 www.baidu.com
      2 www.xiaobai.com

当然还有其它方法,在这里就简单介绍一下常用的方法。

原文地址:https://www.cnblogs.com/su-root/p/10994482.html

时间: 2024-11-04 22:26:27

linux uniq命令用法的相关文章

linux wget 命令用法详解(附实例说明)

Linux wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,尤其对于网络管理员,经常要下载一些软件或从远程服务器恢复备份到本地服务器.如果我们使用虚拟主机,处理这样的事务我们只能先从远程服务器下载到我们电脑磁盘,然后再用ftp工具上传到服务器.这样既浪费时间又浪费精力,那不没办法的事.而到了Linux VPS,它则可以直接下载到服务器而不用经过上传这一步.wget工具体积小但功能完善,它支持断点下载功能,同时支持FTP和HTTP下载方式,支持代理服务器和设置起来

Linux chmod命令用法

chmod----改变一个或多个文件的存取模式(mode) chmod [options] mode files 只能文件属主或特权用户才能使用该功能来改变文件存取模式.mode可以是数字形式或以who opcode permission形式表示.who是可选的,默认是a(所有用户).只能选择一个opcode(操作码).可指定多个mode,以逗号分开. options: -c,--changes 只输出被改变文件的信息 -f,--silent,--quiet 当chmod不能改变文件模式时,不通

Linux uniq命令

200 ? "200px" : this.width)!important;} --> 介绍 uniq命令是一个文本去重命令,它能对标准输入和文本文件进行去重操作,并且能将结果通过stdout输出,uniq命令经常会同sort命令一起使用,uniq命令默认对多条重复的行只显示一行. 参数 -c, --count 在每行记录前显示该行内容的数量 -d, --repeated 仅显示重复的记录行,并且去重 -D, --all-repeated[=delimit-method] 仅显示

Linux uniq命令使用简介

uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用. 语法 uniq(选项)(参数) 选项 -c或--count:在每列旁边显示该行重复出现的次数: -d或--repeated:仅显示重复出现的行列: -f<栏位>或--skip-fields=<栏位>:忽略比较指定的栏位: -s<字符位置>或--skip-chars=<字符位置>:忽略比较指定的字符: -u或--unique:仅显示出一次的行列: -w<字符位置>或--chec

linux find命令用法

Linux下find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花时间来了解一下.即使系统中含有网络文件系统( NFS),find命令在该文件系统中同样有效,只你具有相应的权限. 在运行一个非常消耗资源的find命令时,很多人都倾向于把它放在后台执行,因为遍历一个大的文件系统可能会花费很长的时间(这里是指30G字节以上的文件系统). 1.命令格式: find pat

Linux grep命令用法以及正则表达式

1.grep命令和正则表达式的简介 (1).grep(Global search REgular expression and Print out the line),即全局搜索正则表达式并打印出匹配的行,它是Linux系统中一个强大的文本搜索工具,它根据用户指定的"模式(pattern)"对目标文本进行过滤,显示被模式匹配到的行: (2).正则表达式是由一类字符书写的模式,其中有些字符不表示符的字面意义,而是表示控制或通配的功能 2.grep命令的基本语法格式 grep [OPTIO

Linux nc命令用法收集

ps.ubuntu自带的nc是netcat-openbsd版,不带-c/-e参数. pss.在线Markdown编辑器的bug是怎么回事..."#"号依然显示着 ##参数 想要连接到某处: nc [-options] hostname port[s] [ports] - 绑定端口等待连接: nc -l port [-options] [hostname] [port] -g<网关>:设置路由器跃程通信网关,最多设置8个; -G<指向器数目>:设置来源路由指向器,

Linux Linux grep命令用法以及正则表达

一.grep命令和正则表达式的简介 1.grep(Global search REgular expression and Print out the line),即全局搜索正则表达式并打印出匹配的行,它是Linux系统中一个强大的文本搜索工具,它根据用户指定的"模式(pattern)"对目标文本进行过滤,显示被模式匹配到的行: 2.正则表达式是由一类字符书写的模式,其中有些字符不表示符的字面意义,而是表示控制或通配的功能 二.grep命令的基本语法格式 grep [OPTION]..

linux type命令用法

转自:http://codingstandards.iteye.com/blog/831504 用途说明 type命令用来显示指定命令的类型.一个命令的类型可以是如下之一 alias 别名 keyword 关键字,Shell保留字 function 函数,Shell函数 builtin 内建命令,Shell内建命令 file 文件,磁盘文件,外部命令 unfound 没有找到 它是Linux系统的一种自省机制,知道了是那种类型,我们就可以针对性的获取帮助.比如内建命令可以用help命令来获取帮助