我有一个看起来像这样的文件
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 只将我需要的列放入临时文件中,但考虑到该文件很容易在 30 到 100+ MB 之间波动,我相信不涉及中间文件会更快。我考虑过反转文件,从类型为 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