![첫 번째 루프 반복에서 awk getline이 예상대로 작동하지 않습니다.](https://linux55.com/image/39039/%EC%B2%AB%20%EB%B2%88%EC%A7%B8%20%EB%A3%A8%ED%94%84%20%EB%B0%98%EB%B3%B5%EC%97%90%EC%84%9C%20awk%20getline%EC%9D%B4%20%EC%98%88%EC%83%81%EB%8C%80%EB%A1%9C%20%EC%9E%91%EB%8F%99%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
이 간단한 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;
각 입력 줄에 대해 실행됩니다. 여기서는 행을 명시적으로 반복할 필요가 없습니다.