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

おすすめ記事