summaryrefslogtreecommitdiff
path: root/sum3.awk
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--sum3.awk31
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]+$/
+}
+