0

我正在寻找一种方法来计算字段中的值出现在 csv 文件中的一系列字段中的次数,这与 excel 中的 countif 非常相似,尽管我想尽可能使用 awk 命令。

所以第 1 列应该有值的范围,第 2 列会有值出现在第 1 列中的次数

4

2 回答 2

1

计算每个值在第一列中出现的次数,并将计数附加到每行的末尾:

$ cat file
1,2,3
1,2,3
9,7,4
1,5,7
3,2,1

$ awk -F, '{c[$1]++;l[NR]=$0}END{for(i=0;i++<NR;){split(l[i],s,",");print l[i]","c[s[1]]}}' file
1,2,3,3
1,2,3,3
9,7,4,1
1,5,7,3
3,2,1,1
于 2013-01-25T22:11:39.893 回答
0

另一种使用 Perl 的解决方案。

perl -F, -lane ' $kv{$F[0]}++;$kl{$.}=$_;END {for(sort keys %kl) { $x=(split(",",$kl{$_}))[0]; print "$kl{$_},$kv{$x}" }} '

借用克里斯的意见

$ cat kbiles.txt
1,2,3
1,2,3
9,7,4
1,5,7
3,2,1

$ perl -F, -lane ' $kv{$F[0]}++;$kl{$.}=$_;END {for(sort keys %kl) { $x=(split(",",$kl{$_}))[0]; print "$kl{$_},$kv{$x}" }} ' kbiles.txt
1,2,3,3
1,2,3,3
9,7,4,1
1,5,7,3
3,2,1,1

$
于 2019-02-20T12:08:19.507 回答