我有一个格式如下的文件
Time Number Val
x 1 y
x 1 y
a 1 z
b 1 m
b 2 m
我想要使用相同值的俱乐部线,最终文件应该是这样的
Time Number Val
x 2 y
a 1 z
b 3 m
如何使用awk执行此操作?
答案 0 :(得分:1)
您可以使用awk的关联数组:
awk 'NR==1{print $0} NR!=1{a[$1]+=$2; b[$1]=$3;} \
END{ for ( i in a) print i, a[i], b[i]}' file
对于您的样本输入,它会打印:
Time Number Val
x 2 y
a 1 z
b 3 m
答案 1 :(得分:1)
统计所有重复的Time
和Val
组合:
awk 'NR>1{a[$1,$3]+=$2;next}$1=$1;END{for(k in a){split(k,s,SUBSEP);print s[1],a[k],s[2]}}' OFS="\t" file
Time Number Val
a 1 z
b 3 m
x 2 y