summaryrefslogtreecommitdiff
path: root/diff1.awk
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--diff1.awk44
1 files changed, 27 insertions, 17 deletions
diff --git a/diff1.awk b/diff1.awk
index 42cc5a8..e2c4a99 100644
--- a/diff1.awk
+++ b/diff1.awk
@@ -1,4 +1,4 @@
-#!/usr/bin/awk -f
+#!usr/bin/awk -f
### diff.awk
# numerical diff along columns
@@ -13,30 +13,40 @@ BEGIN {
}
NR == 1 {
- header_nf = NF
+ ### orig data columns
for (n=1; n<=NF; n++) {
- if ($n !~ number)
- header[n] = "d" $n
- else
- header[n] = "col_" n
- printf("%s,", header[n])
+ if ($n !~ number) {
+ header[n] = $n
+ dheader[n] = "d" $n
+ }
+ else {
+ header[n] = "col" n
+ dheader[n] = "dcol" n
+ }
+ printf(dheader[n])
+ if (n < NF)
+ printf(OFS)
}
}
-NF != 0 {
- if (NF > max_nf)
- max_nf = NF
+NF {
+ if (NF > nf_max)
+ nf_max = NF
- ### iterate over columns
- for (y=1; y<=max_nf; y++) {
+ ### data columns
+ for (y=1; y<=nf_max; y++) {
+ if ($y == header[y] || $y == dheader[y])
+ continue
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] = ""
data_prev[y] = data[y]
-
+ printf("%.12g", diff[y])
}
+ else
+ diff[y] = ""
+ if (y < nf_max)
+ printf(OFS)
}
- printf("\n")
+ printf(ORS)
}