1

我有三排。第一行和第二行有数字,第三行有名字。使用 awk,如何将与名称相关的所有数字相加。名称可能是随机的,所以我可能需要一个变量。例如,它可能看起来像这样

100   221   dog
121   324   cat
42    4341  fish
12    23    cat
2134  424   dog

所以输出应该是第 1 行和第 2 行中所有出现的狗、猫和鱼的所有数字。喜欢

dog 2879
cat 480
fish 4383
4

2 回答 2

4

试试这个单行:

awk '{a[$3]+=($1+$2)}END{for(x in a)print x, a[x]}' file
于 2013-04-01T20:46:49.813 回答
0
awk '
{
   name[$3] += $1 + $2
}
END { for (n in name) { print n, name[n]; } } ' datafile
于 2013-04-01T20:53:58.110 回答