첫 번째 루프 반복에서 awk getline이 예상대로 작동하지 않습니다.

첫 번째 루프 반복에서 awk getline이 예상대로 작동하지 않습니다.

이 간단한 awk 계산기 프로그램과 그 출력을 고려하십시오.

$ awk '{while (getline) {n=0;for(i=NF;i>0;i--)n+=$i; print "sum: " n;}}'
1 1
2 2
sum: 4
3 3
sum: 6

첫 번째 입력 행이 어떻게 1 1합계를 생성하지 않는지 확인하세요. 모든 연속 생산 라인은 예상대로 작동합니다. 입력의 첫 번째 줄에 합계가 인쇄되지 않는 이유는 무엇입니까?

답변1

를 사용하면 getline첫 번째 줄이 삭제됩니다. 다음으로 변경해 보세요.

awk '{n=0;for(i=NF;i>0;i--)n+=$i; print "sum: " n;}'

본질적으로 awk입력 행은 암시적으로 반복됩니다. 따라서 코드는 n=0;for(i=NF;i>0;i--)n+=$i; print "sum: " n;각 입력 줄에 대해 실행됩니다. 여기서는 행을 명시적으로 반복할 필요가 없습니다.

관련 정보