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

额,目测没有这样的程序。

不过可以自己写一个c的实现

#include <stdio.h>

#include <stdlib.h> 

int main(int argc, char *argv[])

{

    int i, res = 0 

    for (i = 1 i < argc i++)

         res += atoi(argv[i])

    printf("%d", res) 

    return 0 

}

匆忙写的,可能有问题,见谅。

编译后用 ./a.out 1 2 3 4 5...... numberN调用即可。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存