Portál AbcLinuxu, 14. května 2025 04:06
plot 1:($2+$3+...)
#!/bin/bash # USAGE: mergefuncs FILE... # Martin Cizek <cizek@webland.cz> [ $# -gt 0 ] || exit 1; awk ' function complete_last() { for (i = idx; i <= count; i++) res[i] = res[i] " 0" idx = 1 have_prev = 0 } BEGIN { xi = 0 idx = 1 } ARGIND < ARGC/2 { if (length($1)) x[xi++] = (double)$1 next } !sorted { count = asort(x) sorted = 1 lastind = ARGIND } /[^ \t]/{ if (lastind != ARGIND) complete_last() lastind = ARGIND while (idx <= count && x[idx] <= $1) { if ((have_prev && x[idx] == prev_x) || x[idx] == $1) res[idx] = res[idx] " " $2 else if (have_prev && x[idx] >= prev_x) res[idx] = res[idx] " " (prev_y + ($2-prev_y)*(x[idx]-prev_x)/($1-prev_x)) else res[idx] = res[idx] " 0" idx++; } } /[^ \t]/&&!have_prev { have_prev = 1 prev_x = (double)$1 prev_y = (double)$2 } END { complete_last() for (i = 1; i <= count; i++) print x[i] " " res[i] } ' "$@" "$@"
join -e 0 -j 1 files...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.