如何分别根据其他列中的变量获取列中值的总和?

awk*_*rob 5 awk shell-script text-processing numeric-data

我有一个如下表数据

abc 1   1   1
bcd 2   2   4
bcd 12  23  3
cde 3   5   5
cde 3   4   5
cde 14  2   25
Run Code Online (Sandbox Code Playgroud)

我想要根据第一列中的变量计算每列中的值的总和,所需的结果如下所示:

abc 1   1   1
bcd 14  25  7
cde 20  11  35
Run Code Online (Sandbox Code Playgroud)

我像这样使用 awk 命令

awk -F"\t" '{for(n=2;n<=NF; ++n)a[$1]+=$n}END{for(i in a ) print i, a[i] }' tablefilepath
Run Code Online (Sandbox Code Playgroud)

我得到的结果如下:

abc 3
bcd 46
cde 66
Run Code Online (Sandbox Code Playgroud)

我认为我的代码结尾是错误的,但不知道如何修复它。我需要一些指示来修复代码。

Sco*_*ott 4

你已经相当接近了。\xc2\xa0\n你知道你做错了什么,不是吗?\xc2\xa0\n你为每列\xc2\xa01值保留了一个总数,\n当你应该保留时三。

\n\n

这与Inian 的答案类似,但可以轻松扩展以处理任意数量的列:

\n\n
awk -F"\\t" \'{for(n=2;n<=NF; ++n) a[$1][n]+=$n}\n        END {for(i in a) {\n                printf "%s", i\n                for (n=2; n<=4; ++n) printf "\\t%s", a[i][n]\n                printf "\\n"\n             }\n        }\'\n
Run Code Online (Sandbox Code Playgroud)\n\n

不像 Inian 的答案那样保留三个数组,而是保留一个二维数组。

\n