| Next |  | 24 | 
This still has some problems
If the last two lines of the input are a heading, they get eaten
Why?
        /^\(.\)\1\1*$/ { x; 
                         y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/;
                                      x; d;
                       }
This uppercases the hold space
but d skips the print and starts prcessing the next line of input
        $ { p;x; }
So the special last-line behavior is skipped
I tried hard to fix this, but I'm not clever enough
| Next |  | Next |