複数列ファイルの1列を蓄積してファイル全体を保存します。

複数列ファイルの1列を蓄積してファイル全体を保存します。

複数列ファイルの列累積合計を計算し、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

関連情報