diff options
Diffstat (limited to '')
| -rw-r--r-- | sum3.awk | 15 |
1 files changed, 10 insertions, 5 deletions
@@ -11,24 +11,29 @@ function isnum(n) { } -BEGIN { OFS = FS } +BEGIN { + OFS = FS +} + NR == 1 { - nfld = NF for (i=1; i<=NF; i++) numcol[i] = isnum($i) } -{ + +NF > 0 { + (NF > nf_max) ? nf_max = NF : nf_max = nf_max for (i=1; i<=NF; i++) if (numcol[i]) sum[i] += $i } + END { - for (i=1; i<=nfld; i++) { + for (i=1; i<=nf_max; i++) { printf(numcol[i] ? sum[i] : "--") - printf(i < nfld ? OFS : ORS) + printf(i < nf_max ? OFS : ORS) } } |
