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)
我认为我的代码结尾是错误的,但不知道如何修复它。我需要一些指示来修复代码。
你已经相当接近了。\xc2\xa0\n你知道你做错了什么,不是吗?\xc2\xa0\n你为每列\xc2\xa01值保留了一个总数,\n当你应该保留时三。
\n\n这与Inian 的答案类似,但可以轻松扩展以处理任意数量的列:
\n\nawk -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 }\'\nRun Code Online (Sandbox Code Playgroud)\n\n不像 Inian 的答案那样保留三个数组,而是保留一个二维数组。
\n