export PRAXIS=/home/phil/praxis awk ' # permuted table of contents (page "permuted") BEGIN { FS = "\n"; RS = "" split("Jan:Feb:Mar:Apr:May:Jun:Jul:Aug:Sep:Oct:Nov:Dec", monthname, ":") } $1 ~ /^number\t[1-9][0-9]*$/ { for (i in val) delete val[i] for (i=1; i<=NF; i++) if (split($i, f, /\t/) == 2) val[f[1]] = f[2] if (val["ptitle"] == "") val["ptitle"] = val["title"] if (val["pblurb"] == "") val["pblurb"] = val["blurb"] for (i in words) delete words[i] for (i in pwords) delete pwords[i] n = split(val["title"] ": " val["blurb"], words, / /) if (split(val["ptitle"] ": " val["pblurb"], pwords, / /) != n) print "error: unmatched word count at " val["number"] | "cat 1>&2" for (i=1; i<=n; i++) { # main loop to generate rotated permutations sortkey = suffix = "" for (j=i; j<=n; j++) { sortkey = sortkey " " pwords[j] suffix = suffix " " words[j] } sortkey = substr(sortkey,2); suffix = substr(suffix,2) prefix = "" for (j=1; j