unix - 如何对 AWK 中的列求和?

标签 unix awk

这个问题在这里已经有了答案:





Summing values of a column using awk command

(2 个回答)


5年前关闭。




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

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

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

最佳答案

在这里拆分似乎没有必要,特别是考虑到您使用的是 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 的内容。

关于unix - 如何对 AWK 中的列求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28905083/

相关文章:

bash - 使用 awk 在 bash 脚本中创建 ":"分隔列表

linux - 如果 2 个模式少于 n 行,sed 删除它们之间的内容

awk - 垂直对齐尾随反斜杠

linux - 删除所有早于给定时间的文件并记录其操作的命令

unix - 什么进程正在监听 Solaris 上的某个端口?

unix - 查找 UNIX 风格的命令?

linux - 将文件内容与其他文件名匹配以提取和合并内容

linux - 如何在文件中的特定列中搜索 shell 中的字符串?

linux - 为什么这个 SED 命令不起作用?

bash - 使用 awk 更改最后记录分隔符