如何在AWK中汇总一列?

Ajo*_*Ajo 12 unix awk

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

awk '{split($0,a,",");  print a[57]}'
Run Code Online (Sandbox Code Playgroud)

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

zze*_*nnn 32

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

awk -F',' '{sum+=$57;} END{print sum;}' file.txt
Run Code Online (Sandbox Code Playgroud)

例如,给出以下输入:

    ~$ 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
Run Code Online (Sandbox Code Playgroud)

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

~$ awk -F',' '{sum+=$4;}END{print sum;}' testawk.txt
   216.5
Run Code Online (Sandbox Code Playgroud)

-F','会告诉awk的输入字段分隔符是一个逗号.

{sum+=$4;}增加了第4列到正在运行的总价值.

END{print sum;}会告诉awk所有行被读取后打印总和的内容.

  • @Blaisem - 我经常使用 Java,并且习惯用它们来结束语句。`awk` 使用它们作为命令之间的分隔符,并且这个特定的代码可以在有或没有 semi 的情况下工作,因为没有顺序操作。我已经编辑了答案,以使其在使用 semi 时更加一致,因为它似乎偶尔会得到赞成和观点。 (3认同)

mpr*_*net 7

您可以对文件的第57列求和,然后使用它进行打印

awk '{split($0,a,","); sum += a[57]} END {print sum}' 
Run Code Online (Sandbox Code Playgroud)