diff options
Diffstat (limited to 'sum3.awk')
| -rw-r--r-- | sum3.awk | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/sum3.awk b/sum3.awk new file mode 100644 index 0000000..b4100a7 --- /dev/null +++ b/sum3.awk @@ -0,0 +1,31 @@ +### sum3.awk, print sums of numeric columns +# input: rows of integers and strings +# output: sums of numeric columns +# assumes every line has same layout + +NR==1 { + nfld = NF + for (i=1; i<=NF; i++) + numcol[i] = isnum($i) +} + +{ + for (i=1; i<=NF; i++) + if (numcol[i]) + sum[i] += $i +} + +END { + for (i=1; i<=nfld; i++) { + if (numcol[i]) + printf("%g", sum[i]) + else + printf("--") + printf(i < nfld ? " " : "\n") + } +} + +function isnum(n) { + return n ~ /^[+-]?[0-9]+$/ +} + |
