なぜ三重印刷ですか?

なぜ三重印刷ですか?

私は同じ行を何度も印刷するこのスクリプトを書いています。一度だけ印刷したい場合はどうすればよいですか?

BEGIN {print "Average of salary"}
cnt=cnt+1
total=total+$3
avg=total/cnt
END {printf "Number of records:%d avg is:%d",cnt,avg}

ベストアンサー1

問題は、以下のように、下のコードを中括弧で囲むのではなく、awkTrueステートメントを満たして読み取るすべての行を印刷することです。

{
    cnt=cnt+1
    total=total+$3
    avg=total/cnt
}

しかし、次のようにすることができます。

awk '{ avg=(total+=$3)/NR } END{ print "...", NR, avg }' <infile

この値は、入力ファイルから読み取られたすべてのレコード/行で増加しますNRawkアッすべての行を読み取り、その値はNR最後の行の行番号です(デフォルトでは、次を指します)。エココード窒素数字)

おすすめ記事