汇总每列bash中的所有值 [英] Sum all values in each column bash

查看:62
本文介绍了汇总每列bash中的所有值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个csv文件,如下所示:

I have a csv file which looks like this:

ID_X,1,2,7,8
ID_Y,6,9,3,5
ID_Z,7,12,4,4

我的目标是创建一个csv文件,其中包含每一列(从第二列开始)的所有值的总和,因此在这种情况下,该文件将如下所示:

My goal is to create a csv file with the sum of all the values in each single column (from second column on), so in this case, that file will look like this:

SUM,14,23,14,17

到目前为止,我可以使用awk一次完成一列.例如,对于带有数字的第一列:

So far, I am able to do it for one column at a time using awk. For instance, for the first column with numbers:

awk 'BEGIN {FS=OFS=","} ; {sum+=$2} END {print sum}' test.txt
14

有什么方法可以实现我想要的?

Is there any way to achieve what I am looking for?

非常感谢!

推荐答案

  1. 使用 datamash :

echo -n SUM,; datamash -t,  sum 2,3,4,5 < file.csv

  • 使用 numsum :

    printf 'SUM%.0s,%s,%s,%s,%s\n' `numsum -s, -c  file.csv` 
    

    ,或者,如果 file.csv 中的列数是可变的:

    or, if the number of columns in file.csv is variable:

    numsum -s, -c  file.csv | sed 's/^0/SUM/;y/ /,/'
    

  • 输出:

    SUM,14,23,14,17
    

    这篇关于汇总每列bash中的所有值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆