awk '
# kwic - generate kwic index

{   print $0
    for (i = length($0); i > 0; i--) # compute length only once
        if (substr($0,i,1) == " ")
            # prefix space suffix ==> suffix tab prefix
            print substr($0,i+1) "\t" substr($0,1,i-1)
} ' |
sort -f |
awk '
BEGIN { FS = "\t"; WID = 30 }
      { printf("%" WID "s  %s\n", substr($2,length($2)-WID+1),
            substr($1,1,WID))
} '
