#!/bin/awk -f BEGIN { i=0; } function alength(a){ i = 0; for(v in a) i++; return i; } # insertion sort found in traceroute function sortthisarrays(ar1,ar2){ n = alength(ar1); for (i = 2; i <= n; ++i) { v = ar1[i]; v2 = ar2[i]; j = i - 1; while (ar1[j] > v) { ar1[j+1] = ar1[j]; ar2[j+1] = ar2[j]; j = j - 1; if (j < 0) break; } ar1[j+1] = v; ar2[j+1] = v2 } } /^set/ { n = split($0,erg); searchword[i] = erg[2]; changeword[i] = erg[3]; i++; next; # Stop processing the current input record (line). } { sortthisarrays(searchword,changeword); # sort such that longest words are replaced first (else, beginning parts of longer words could be replaced) for (u in searchword) if (length(searchword[u])>0) gsub(sprintf("\\\$%s", searchword[u]), sprintf("%s", changeword[u]),$0); print $0 } END { }