summaryrefslogtreecommitdiff
path: root/sum4.awk
diff options
context:
space:
mode:
Diffstat (limited to 'sum4.awk')
-rw-r--r--sum4.awk49
1 files changed, 0 insertions, 49 deletions
diff --git a/sum4.awk b/sum4.awk
deleted file mode 100644
index 3e61843..0000000
--- a/sum4.awk
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/usr/bin/awk -f
-
-### 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
-}
-
-
-BEGIN {
- OFS = FS
-}
-
-
-NR == 1 {
- for (i=1; i<=NF; i++)
- isnum($i) ? header[i] = "col" i : header[i] = $i
-}
-
-
-NF > 0 {
- (NF > nf_max) ? nf_max = NF : nf_max = nf_max
- for (i=1; i<=NF; i++) {
- if ($i == header[i])
- continue
- if (isnum($i)) {
- count[i]++
- sum[i] += $i
- }
- }
-}
-
-
-END {
- for (i=1; i<=nf_max; i++) {
- printf((header[i]) ? header[i] OFS : OFS)
- printf((count[i]) ? count[i] OFS sum[i] : OFS)
- printf(ORS)
- }
-}
-