このように数字を合計する必要があります。
入力する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
答え2
「dc」電卓コマンドの使用方法は次のとおりです。
echo '1 5 6 8 9 11' |
dc -e "
[SM]sa # macro a pushes TOS into stack M
[dn32and]sp # macro p prints current sum value
[z 1 <a SM z 0 <b]sb # macro b accumulates the main stack in stack M
[LM+lpx z lN !<c]sc # macro c is while loop for showing running sum
? zsN lbx 0 lcx []p # main() which brings together all macros
"