diff options
| author | wukong <wukong@longaeva> | 2018-06-05 22:34:51 -0700 |
|---|---|---|
| committer | wukong <wukong@longaeva> | 2018-06-05 22:34:51 -0700 |
| commit | 8f263e859e0970ce87b77addc80dec28e8fc7e82 (patch) | |
| tree | b0bdc392230c9960f5e5f5b3dea979405334628f /sum4.awk | |
re-init
Diffstat (limited to '')
| -rw-r--r-- | sum4.awk | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/sum4.awk b/sum4.awk new file mode 100644 index 0000000..c592409 --- /dev/null +++ b/sum4.awk @@ -0,0 +1,37 @@ +### sum4.awk, print sums of numeric columns +# input: rows of integers and strings +# output: sums of numeric columns + +function isnum(n) { + sign = "[+-]?" + decimal = "[0-9]+[.]?[0-9]*" + fraction = "[.][0-9]+" + exponent = "([Ee]" sign "[0-9]+)?" + number = "^" sign "(" decimal "|" fraction ")" exponent "$" + return n ~ number +} + +NR==1 { + nfldz = NF + for (i=1; i<=NF; i++) { + if (!isnum($i)) + header[i] = $i + } +} + +{ + for (i=1; i<=NF; i++) { + sum[i] += $i + count[i]++ + } +} + +END { + for (i=1; i<=nfldz; i++) { + if (header[i]) + printf("%s: \t", header[i]) + #if (numcol[i]) + printf("%g\n", sum[i]) + printf(i < nfldz ? "" : "\n") + } +} |
