多列文件的某一列的累积和并保存整个文件

多列文件的某一列的累积和并保存整个文件

如何计算多列文件中列的累积和并使用 bash 命令保存整个文件?

输入文件的示例如下:

0       1869.75  31
1.342   1869.75  31
9.8     2479.45  177.8
74.15   3730.05  909.1 
43.6    5793.95  3562.95

我希望最左边的列包含从上到下的累积总和,并且文件的其余部分保持不变。示例输出文件如下:

0        1869.75  31
1.342    1869.75  31
11.142   2479.45  177.8
85.292   3730.05  909.1 
128.892  5793.95  3562.95

我在名为“50.txt”的文件上尝试了以下简单命令,但对新文件“n_50.txt”没有执行任何操作:

awk '{sum+=$1;print}' 50.txt > n_50.txt

感谢您提前提供的帮助。

答案1

你可以尝试这样的事情:

# cat q
0 1 2
1 2 3
2 3 4
3 4 5
                                                                                                                       

# awk '{sum+=$1;$1=sum}1' q
0 1 2
1 2 3
3 3 4
6 4 5

这个想法是将第一个字段替换为sum

答案2

你需要更新$1的值

尝试

awk '{sum+=$1;$1=sum;print} ' 50.txt > n_50.txt

(我没有测试,因为我无法复制/粘贴图像)

答案3

使用米勒 ( mlr):

$ cat file
1.1 2 3
4.4 5 6
5.5 6 7
8.8 9 0
$ mlr --nidx put '@sum += $1; $1 = @sum' file
1.100000 2 3
5.500000 5 6
11.000000 6 7
19.800000 9 0
$ mlr --nidx put '@sum += $1; $1 = fmtnum(@sum,"%lg")' file
1.1 2 3
5.5 5 6
11 6 7
19.8 9 0

相关内容