#! /bin/sed -f # Put a space in front to simplify treatment of the first word s/^/ / :loop /[ ][a-z]/ { # Get the letter to be changed and construct <letter><before>\n<after> s/^\(.*[ ]\)\([a-z]\)\(.*\)$/\2\1\ \3/ h # Capitalize the first letter of pattern space, remove the rest of it s/^\(.\).*/\1/ y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/ G # Pattern space is now <new>\n<old><before>\n<after>; construct # <before><new><after> and loop back (<after> is not matched by the RE) s/^\(.\)\n.\(.*\)\n/\2\1/ b loop } # Remove the space we had added s/^.// ### colorized by sedsed, a debugger and code formatter for sed scripts ### original script: http://sed.sf.net/grabbag/scripts/cflword2.sed