如何在AWK中汇总一列?

时间:2015-03-06 18:17:35

标签: unix awk

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

awk '{split($0,a,",");  print a[57]}'

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

2 个答案:

答案 0 :(得分:25)

此处似乎没有必要进行拆分,特别是考虑到您正在使用awk,这是基于字段的处理。如果您的文件真正以逗号分隔,则以下代码似乎更简单,IMO:

awk -F',' '{sum+=$57;} 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+=$4;}END{print sum;}' testawk.txt
   216.5

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

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

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

答案 1 :(得分:7)

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

进行打印
awk '{split($0,a,","); sum += a[57]} END {print sum}'