#! /usr/bin/gawk -f # Last edited on 2004-02-07 05:43:59 by stolfi BEGIN { abort = -1; chnum = 0; } (abort >= 0) { exit abort; } /^[\#]/ { next; } /^ *$/ { print; next; } /THE FOLLOWING TEXT/ { next; } /^[@]/ { lin = $0; folio = $1; lin = substr(lin, i+length(folio)+1); gsub(/^[@]*/, "", folio); lin = fix_acip_bugs(lin); printf "\n# Folio %s\n\n", folio; printf " %s\n", lin; next; } // { lin = $0; lin = fix_acip_bugs(lin); printf " %s\n", lin; next; } function fix_acip_bugs(lin) { gsub(/^[\011 ]+/, "", lin); gsub(/[\011 ]+$/, "", lin); gsub(/[\011 ][\011 ]+/, " ", lin); lin = (" " lin " "); # replace bogus "7" letter by caret: lin = gensub(/[ ][7]([A-Za-z\047])/, " ^\\1", "g", lin); gsub(/^[1 ]+/, "", lin); gsub(/[ ]+$/, "", lin); # replace triple scroll mark "#" by "~~~": lin = gensub(/[\#]/, "~~~", "g", lin); # replace double scroll mark "*" by "~~": lin = gensub(/[*]/, "~~", "g", lin); # replace double comma ",," by paragraph break: lin = gensub(/ *[,][,] */, "\n =\n\n ", "g", lin); return lin; } function data_error(msg){ printf "%d: error: %s\n", FNR, msg > "/dev/stderr"; abort = 1; exit abort; }