如何计算多列文件中列的累积和并使用 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