
この単純な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;
各入力行に対して実行されます。ここでは、行を明示的に繰り返す必要はありません。