awkで数値リストの累計を生成しますか?

awkで数値リストの累計を生成しますか?

このように数字を合計する必要があります。

入力する1 5 6 8 9 11

出力1 6 12 20 29 40

つまり: 1 1+5 1+5+6 1+5+6+8 1+5+6+8+9 1+5+6+8+9+11

ベストアンサー1

存在するawk

{
    for (i = 1; i <= NF; ++i) {
        printf("%d ", s += $i);
    }
    printf("\n");
}

このループはすべての入力フィールドを繰り返し、s数字の累計を印刷します()。この変数はs最初の反復で値がゼロになるため、初期化する必要はありません。割り当て結果sは値でありs、この値は末尾の空白文字で印刷されます。

入力例を使用する:

$ echo "1 5 6 8 9 11" | awk -f script.awk
1 6 12 20 29 40

おすすめ記事