summaryrefslogtreecommitdiff
path: root/diff1.awk
diff options
context:
space:
mode:
Diffstat (limited to 'diff1.awk')
-rw-r--r--diff1.awk30
1 files changed, 17 insertions, 13 deletions
diff --git a/diff1.awk b/diff1.awk
index cf1f2ff..7322e98 100644
--- a/diff1.awk
+++ b/diff1.awk
@@ -1,9 +1,11 @@
#!/usr/bin/awk -f
### diff1.awk
-# numerical diff along columns
+# print numerical diff along columns
BEGIN {
+ OFS = FS
+ # OFMT = "%.9g"
sign = "[+-]?"
decimal = "[0-9]+[.]?[0-9]*"
fraction = "[.][0-9]*"
@@ -12,7 +14,7 @@ BEGIN {
}
NR == 1 {
- ### orig data columns
+ # orig data columns
for (n=1; n<=NF; n++) {
if ($n !~ number) {
header[n] = $n
@@ -31,18 +33,20 @@ NF {
if (NF > nf_max)
nf_max = NF
- ### data columns
- for (y=1; y<=nf_max; y++) {
- if ($y == header[y] || $y == dheader[y])
+ # data columns
+ for (n=1; n<=nf_max; n++) {
+ if ($n == header[n] || $n == dheader[n])
continue
- if ($y ~ number) {
- data[y] = $y
- (data_prev[y] ~ number) ? diff[y] = data[y] - data_prev[y] : diff[y] = ""
- data_prev[y] = data[y]
- printf(OFMT, diff[y])
+ if ($n ~ number) {
+ data[n] = $n
+ if (data_prev[n] ~ number)
+ diff[n] = data[n] - data_prev[n]
+ else
+ diff[n] = ""
+ data_prev[n] = data[n]
}
- else
- diff[y] = ""
- printf(y < nf_max ? OFS : ORS)
+ printf(diff[n])
+ printf(n < nf_max ? OFS : ORS)
}
}
+