使用 shell 或 bash 定位块平均大型 csv 文件

Using shell or bash to position block average large csv files

假设我有一些看起来像这样的数据

1,2,2
3,4,5
4,5,6
1,2,3
4,5,6
1,2,2

包含在 csv 文件中。现在我想这样定位块平均值:添加块(例如两行)然后取平均值:

1,2,2
3,4,5
+
4,5,6
1,2,3
+
4,5,6
1,2,2

这会给

9,12,14
5,8,10

按块数 (3) 平均为:

3,4,4.67
1.67,2.67,3.33

有没有在 awk、sed、grep 或 pure bash 中实现此目的的简单方法?我的真实数据以 GB 为单位,因此它确实需要非常高效。

开始方法如下:

$ cat tst.awk    
BEGIN{ FS=OFS="," }
{
    for (i=1;i<=NF;i++) {
        sum[((NR-1)%2)+1,i] += $i
    }
}
END {
    for (j=1;j<=2;j++) {
        for (i=1;i<=NF;i++) {
            printf "%s%s", sum[j,i], (i<NF?OFS:ORS)
        }
    }
}

$ awk -f tst.awk file
9,12,14
5,8,10

我稍后会查看您是否对如何完成它有疑问。