linux命令对某一列去重统计

linux命令对某一列去重统计,第1张

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 是计数有多少行

比方说遇到一行是

xxx 7

那么, {a[$1]+=$2b[$1]++} 这句代码的作用就是依次执行

a["xxx"] += 7

b["xxx"] ++

这两条命令用分号隔开,所以没有因果关系,仅仅是先后依次执行而已。你也可以把两条命令颠倒次序,没有任何影响。

awk 依次读取文件,按照分隔符(默认为空格,用户可修改)将每行分割成若干个字段,代码中可通过 $1, $2, $3 ... 来引用第1、2、3。。。个字段。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7507933.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存