diff options
| -rw-r--r-- | diff.awk | 12 | ||||
| -rw-r--r-- | diff1.awk | 35 |
2 files changed, 40 insertions, 7 deletions
@@ -11,27 +11,25 @@ NR == 1 { header_nf = NF for (n=1; n<=NF; n++) { if ($n !~ number) - header[n] = $n + header[n] = "d" $n else - header[n] = n + header[n] = "col_" n + printf("%s,", header[n]) } } NF != 0 { - printf("\n%s: %s\n", NR, $0) if (NF > max_nf) max_nf = NF ### iterate over columns for (y=1; y<=max_nf; y++) { if ($y ~ number) { - count[y] += 1 data[y] = $y - sum[y] += $y - mean[y] = data[y] diff[y] = data[y] - data_prev[y] - print header[y], data[y], sum[y], diff[y] + printf("%g,", diff[y]) data_prev[y] = data[y] } } + printf("\n") } diff --git a/diff1.awk b/diff1.awk new file mode 100644 index 0000000..41859db --- /dev/null +++ b/diff1.awk @@ -0,0 +1,35 @@ + +BEGIN { + sign = "[+-]?" + decimal = "[0-9]+[.]?[0-9]*" + fraction = "[.][0-9]*" + exponent = "([Ee]" sign "[0-9]+)?" + number = "^" sign "(" decimal "|" fraction ")" exponent "$" +} + +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]) + } +} + +NF != 0 { + if (NF > max_nf) + max_nf = NF + + ### iterate over columns + 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] = data[y] + } + } + printf("\n") +} |
