次のファイルがあります
InvoiceDate Bill Person BAN Type Amount Amount-Expenses GreenFee TaxAmount FinalTotal
1524753593 Jennifer Doe 39193 S 33.30 20 2 1 75
1524753593 Jason Bourne Doe 395931 S 27.00 11 2 1 57.33
1524753593 Feature D 15 12.00 64.20
1524753593 Jean-Pierre Doe 395931 S 53.10 44 2 1 12.33
1524753593 Feature D 12 5.00 74.32
1524753593 Jamie Doe 39193 S 35.30 42 2 1 53.11
合計ファイル数を取得する必要があります。上記のサンプルのようなものは何千ものあります。最後の列の総数が必要ですが、列数が8より大きい場合にのみ必要です。
grepを使用して必要な列だけを一時ファイルに入れることを検討しましたが、ファイルが30MBから100MB以上の間で簡単に変動する可能性があることを考慮すると、中間ファイルを含めない方が速いと思います。私はファイルを裏返してS型の最初の列からすべての数値を取得することを検討しましたが、awkを介してこれを行う方法がわかりません。
答え1
awk 'NF>=8 && NR>1 { entries++; sum+=$8 } END { print "Total for column 8:", sum, "over", entries, "records with this value present." }' inputfile