# fmt - format # input: text # output: text formatted into lines of <= 72 characters BEGIN { maxlen = 72 } /^[ \t]/ { printline(); print; next } # verbatim ###/^ +/ { printline(); } # whitespace == break /./ { for (i = 1; i <= NF; i++) addword($i); next } /^$/ { printline(); print "" } END { printline() } function addword(w) { ## print "adding [", w, "] ", length(w), length(line), maxlen if (length(line) + length(w) > maxlen) printline() if (length(w) > 2 && ( w ~ /[\.!]["?)]?$/ || w ~ /[?!]"?$/) && w !~ /^(Mr|Dr|Ms|Mrs|vs|Ph.D)\.$/) w = w " " line = line " " w } function printline() { if (length(line) > 0) { sub(/ +$/, "", line) print substr(line, 2) # removes leading blank line = "" } } |