summaryrefslogtreecommitdiff
path: root/sum3.awk
diff options
context:
space:
mode:
authorwukong <wukong@longaeva>2018-06-05 22:34:51 -0700
committerwukong <wukong@longaeva>2018-06-05 22:34:51 -0700
commit8f263e859e0970ce87b77addc80dec28e8fc7e82 (patch)
treeb0bdc392230c9960f5e5f5b3dea979405334628f /sum3.awk
re-init
Diffstat (limited to 'sum3.awk')
-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]+$/
+}
+