linux去重命令?linux删除重复行
本篇文章给大家谈谈linux去重命令,以及linux删除重复行对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
Linux 管道命令系列 五 去重命令uniq
uniq命令,Linux管道家族中的成员,主要功能是去除重复项。
为了演示uniq命令,我们创建了一个名为/tmp/uniq.txt的文件,内容如下:
好,现在进行第一次测试:
结果发现,“error php function”重复未被去除,而“onmpw web site”只去重了一条,说明默认情况下uniq只会检索相邻的重复数据。
默认机制导致uniq在处理不同数量重复项时,只去重相邻重复项。为解决此问题,uniq通常与sort命令结合使用。
现在进行第二次测试,确认是否所有重复项都已去重。
接下来简单介绍uniq命令的选项:
-c选项,统计每一行数据的重复次数。
使用-c选项后,"error php function"出现了两次,"onmpw web site"出现了三次,其他无重复项。
-i选项,忽略大小写。
在/tmp/uniq.txt中添加一行数据“Error PHP function”,使用-i选项后,大小写问题被忽略。
-u选项,只输出没有重复的数据。
结果中,"error php function"和"onmpw web site"均未被输出。
-w N选项,表示从第一个字符开始只检索N个字符来判重。
-w 2选项后,结果中“recruise page site”被统计为重复两次,而“repeat no data”消失,因为只对前两个字符进行检索。
-f N选项,表示略过前面N个字段,从第N+1个字段开始检索重复数据。
使用-f 2选项后,“recruise page site”和“onmpw web site”被视为相同数据,因为它们的第三个字段相同。
为解决该问题,需要在sort命令上应用-k选项。
最后,-s N选项,略过前面N个字符,与-f N类似,但前者略过字符,后者略过字段。
-d选项,只输出有重复项的第一条数据。
结果只有三条数据,包含“repeat no data”,这是-w 2选项应用的结果。
-D选项,对于重复项全部输出。
至此,关于uniq命令选项的常用命令介绍完毕,对于更多详细信息,可使用命令info uniq获取。
linux命令对某一列去重/统计
cat file.csv| awk-F'\t''{print$2}'
'\t'指的是file.csv不同列以'\t'分割,如果的是以其他符号分割,换成其她符号;
'{print$2}'是指取第2列,此处从1开始计数,第1列,第2列;
一般去重之前要进行排序
cat file.csv| awk-F'\t''{print$2}' | sort| uniq
前半部分与命令1一样,后面加上| sort| uniq
比如通过命令2发现,第2列取值有两种,分别是'neg'和‘pos’,那么我想知道有多少行的第2列取值为'pos',多少行的第2列取值为'neg'。
cat file.csv| awk-F'\t''{print$2}' | grep-o'neg'| wc-l
前半部分与命令1一样,后面加上 | grep-o'neg'| wc-l
grep-o'neg'就是取出取值为'neg'的行
wc-l是计数有多少行
Linux里面uniq -c命令作用是什么
Linux uniq命令用于检查及删除文本文件中重复出现的行列,一般与sort命令结合使用。
uniq可检查文本文件中重复出现的行列。
语法:
uniq
[-cdu][-f<栏位>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]
参数:
-c或--count在每列旁边显示该行重复出现的次数
-d或--repeated仅显示重复出现的行列
-f<栏位>或--skip-fields=<栏位>忽略比较指定的栏位
-s<字符位置>或--skip-chars=<字符位置>忽略比较指定的字符
-u或--unique仅显示出一次的行列
-w<字符位置>或--check-chars=<字符位置>指定要比较的字符
--help显示帮助
--version显示版本信息
<输入文件>指定已排序好的文本文件。如果不指定此项,则从标准读取数据
<输出文件>指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备