我有以下格式的文件
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 做到这一点?
我有以下格式的文件
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 做到这一点?
计算所有重复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
您可以使用 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