如何在 AWK 中对列求和?

How to Sum a column in AWK?

我的文件由逗号分隔,有 64 列。我提取的字段如下所示:

awk '{split([=10=],a,",");  print a[57]}'

如何使用我的命令计算第 57 列中值的总和?

您可以对文件的第 57 列求和,然后使用

打印它
awk '{split([=10=],a,","); sum += a[57]} END {print sum}' 

此处的拆分似乎没有必要,尤其是考虑到您使用的是专为基于字段的处理而设计的 awk。如果你的文件确实是逗号分隔的,下面的代码似乎更简单,IMO:

awk -F',' '{sum+=;} END{print sum;}' file.txt

例如,给定以下输入:

    ~$ cat testawk.txt
    a,a,aa,1
    a,a,aa,2
    d,d,dd,7
    d,d,dd,9
    d,dd,d,0
    d,d,dd,23
    d,d,dd,152
    d,d,dd,7
    d,d,dd,5
    f2,f2,f2,5.5

我们可以得到这样的总和:

~$ awk -F',' '{sum+=;}END{print sum;}' testawk.txt
   216.5

-F',' 告诉 awk 输入的字段分隔符是逗号。

{sum+=;} 将第 4 列的值加到 运行 总数中。

END{print sum;} 告诉 awk 在读取所有行后打印 sum 的内容。