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