网站首页 > 文章中心 > 其它

linux同一行去重命令

作者:小编 更新时间:2023-09-25 14:35:03 浏览量:255人看过

linux:如何对文本里的相同行进行去重

①选中范围;②查找重复的文本内容,如"今天的大雾今天的大雾";③替换,替换内容"今天的大雾",全都替换、确定.

linux命令对某一列去重/统计

'\t'指的是file.csv不同列以'\t'分割,如果的是以其他符号分割,换成其她符号;

一般去重之前要进行排序

前半部分与命令1一样,后面加上| sort | uniq

前半部分与命令1一样,后面加上?|?grep -o 'neg'| wc -l

grep -o 'neg'就是取出取值为'neg'的行

wc -l 是计数有多少行

linux去重命令

linux去重命令是什么呢?

在介绍uniq命令之前,我们先来新建在下面的案例中需要用到的文件/tmp/uniq.txt,内容如下

默认情况下uniq只会检索相邻的重复数据从而去重.在/tmp/uniq.txt中虽然"onmpw web site" 有三条,但是其中一条是和其他两条不相邻的,所以只去重了一条,同理"error php function"也是这种情况.

鉴于以上的检索机制,所以uniq一般情况下要和sort命令一块儿使用.

复制代码

# sort 1.txt | uniq

alpha css web

cat linux command

error php function

hello world

onmpw web site

recruise page site

repeat no data

wello web site

现在再看是不是所有的重复项都已经经过去重处理了.

好了,小试牛刀一把以后,下面我们开始对uniq命令的选项进行简单的介绍.

-c 统计每一行数据的重复次数

sort 1.txt | uniq -c

①. alpha css web

①. cat linux command

①. hello world

①. recruise page site

①. repeat no data

①. wello web site

我们看 "error php function"出现了两次,"onmpw web site"出现了三次.其余的都没有重复项所以为1.

-i 忽略大小写

在1.txt中添加一行数据 "Error PHP function"

cat 1.txt

Error PHP function

sort 1.txt | uniq –c

①. Error PHP function

我们看结果,uniq默认是区分大小写的.使用-i可以忽略掉大小写问题

sort 1.txt | uniq –c –i

现在再看是不是大小写已经忽略掉了.

-u 只输出没有重复的数据

sort 1.txt | uniq –iu

看到没,结果中的"error php function"和"onmpw web site"都没有被输出.

-w N 表示从第一个字符开始只检索N个字符来判重.

这里我们让uniq只对前两个字符进行检索,recruit 和 repeat前两个字符都是re,所以这两行也被认为是重复的.

-f N 表示略过前面N个字段,从第N+1个字段开始检索重复数据.以空格符或者tab键为分隔符.

要解决这个问题还需要在sort命令上着手.还记得sort命令的-k选项吗,没错,我们就用它来解决.

我们看,是不是解决了.

-s N表示略过前面N个字符,关于这个选项的例子我们这里就不再举了,该选项和-f N的用法差不多.只不过-f N是略过前面N个字段;-s是略过前面N个字符.

-d 只输出有重复项的第一条的数据.

-D 对于重复项全部输出

好了,关于uniq的选项的所有常用的命令已经都介绍完了.关于uniq更详细的信息可以使用命令info uniq.

每天一个linux命令(1)sort

sort 是将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按照ASCII码值进行比较,默认将他们按照升序输出

降序

在输出中去重

将排序结果输出到原文件

sort的默认输出是输出到标准输出,如果想把结果输出到文件,需要 sort file newfile,但是如果想把结果输出到原文件这样就不行了,这时就需要 使用sort -o

以数值来排序

-t 后面跟 分隔符

-k 后面跟数字,表示用第几列排序

我们可以看到,当baidu 和soho都是100的时候,baidu排在前面,当当前域按照默认规矩,是从第一个域开始进行升序排序,所以呢baidu排在了sohu前面.

其实-k 选项 功能很强大,语法[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]

-u只识别用-k设定的域,发现相同,就将后续相同的行都删除

但是这时候,却一行也没有删除.原来-u是会权衡所有-k选项,将都相同的才会删除,只要其中有一级不同都不会轻易删除的

可以用到b、d、f、i、n 或 r.

其中n和r你肯定已经很熟悉了.

b表示忽略本域的签到空白符号.

d表示对本域按照字典顺序排序(即,只考虑空白和字母).

f表示对本域忽略大小写进行排序.

i表示忽略"不可打印字符",只针对可打印字符进行排序.(有些ASCII就是不可打印字符,比如\a是报警,\b是退格,\n是换行,\r是回车等等)

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章