如何使用 awk 对每一列求和并打印列名称和列总和?

如何使用 awk 对每一列求和并打印列名称和列总和?

我有一个包含数字表的文件;第一行是标题行。我想使用 awk 对每列求和并打印出每列的总和和列名称。

我该怎么做?

答案1

假设每行具有相同数量的字段(列):

awk '
    NR==1   { for (i=1; i<=NF; i++) header[i]=$i; next; }
            { for (i=1; i<=NF; i++) total[i] += $i; }
    END     { for (i=1; i<=NF; i++) print header[i] "=" total[i]+0 }
    '

输入示例:

red green blue
1 2 4
8 16 32
64 128 256

对应输出:

red=73
green=146
blue=292

相关内容