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显示版本信息

<输入文件>指定已排序好的文本文件。如果不指定此项,则从标准读取数据

<输出文件>指定输出的文件。如果不指定此选项,则将内容显示到标准输出设备

阅读剩余
THE END