이렇게 숫자를 합산해야 해요
입력하다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
첫 번째 반복에서 값이 0이 되므로 초기화할 필요가 없습니다. 할당 결과 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
"