如何在 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 的内容。
我的文件由逗号分隔,有 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 的内容。