比如 有个文件
a 123 234 345
a 234 345 567
a 123 345 789
b 123 234 567
先按第一列分开,在分别统计后3列,不重复数的个数。结果:前3行 a 2 2 3 后一行 b 1 1 1。
最后输出效果
a 2 2 3
b 1 1 1
思路
- awk '{for(i=2;i<=NF;i++)if(!a[$1,$i,i]++){b[$1];c[$1,i]++;if(i==NF)sum[$1]+=$NF}} END{for(i in b){printf i;for(j=1;j<=NF-1;j++)printf " "c[i,j];print " "sum[i]" "sum[i]/c[i,NF]}}' i
- a 2 2 1701 567
- b 1 1 567 567