From 8875b420a873a360a9484778b487394add318a5e Mon Sep 17 00:00:00 2001 From: wukong Date: Wed, 13 Jun 2018 21:41:39 -0700 Subject: added shebang, replaced if-elses with shortcut notation, ported online mean and variance calc to mean.awk --- diff.awk | 32 +++++++++++++++++++++++++------- 1 file changed, 25 insertions(+), 7 deletions(-) (limited to 'diff.awk') diff --git a/diff.awk b/diff.awk index 1032659..6dc427d 100644 --- a/diff.awk +++ b/diff.awk @@ -1,3 +1,5 @@ +#!/usr/bin/awk -f + ### diff.awk # numerical diff along columns @@ -12,11 +14,16 @@ BEGIN { NR == 1 { header_nf = NF for (n=1; n<=NF; n++) { - if ($n !~ number) - header[n] = "d" $n - else - header[n] = "col_" n - printf("%s,", header[n]) + printf("%s", $n) + ($n !~ number) ? dheader[n] = "d" $n : dheader[n] = "dcol_" n + if (n <= NF) + printf("%s", OFS) + } + + for (n=1; n<=NF; n++) { + printf("%s", dheader[n]) + if (n < NF) + printf("%s", OFS) } } @@ -25,12 +32,23 @@ NF != 0 { max_nf = NF ### iterate over columns + for (y=1; y<=max_nf; y++) { + if (match(dheader[y], $y)) + continue + if ($y ~ number) + printf("%g", $y) + if (y <= max_nf) + printf("%s", OFS) + } + for (y=1; y<=max_nf; y++) { if ($y ~ number) { data[y] = $y - diff[y] = data[y] - data_prev[y] - printf("%g,", diff[y]) + (data_prev[y] ~ number) ? diff[y] = data[y] - data_prev[y] : diff[y] = "nan" data_prev[y] = data[y] + printf("%g", diff[y]) + if (y < max_nf) + printf("%s", OFS) } } printf("\n") -- cgit v1.2.3