#n #This sed script prints out 99 green bottles with words or numbers #Type numbers to get numbers otherwise, give it a blank line # #Author: E. Rosten #License: GPL (www.gnu.org) /numbers/ { s/.*/99a green bottles hanging on the wall/ b l1 } s/.*/99 green bottles hanging on the wall/ :l1 h s/\(.*\)/c\1/ b enum :eenumc :begin h s/\(.*\)/b\1/ b enum :eenumb s/.*/And if one green bottle should accidently fall/ p g s/.\(.\)/\1/ y/9876543210/8765432109/ x s/\(.\).*/\1/ x /9/ { x y/9876543210/8765432109/ x } x G s/\ // h s/\(.*\)/aThere'll be \1/ b enum :eenuma s/.*/\ / p x /00/ q b begin b end :enum /[0-9][0-9]a/ { s/\(.*[0-9][0-9]\)a\(.*\)/\1\2/ b noenum } /[02-9][0-9]/ { /0[0-9]/ s/0/!/ /2[0-9]/ s/2/twenty / /3[0-9]/ s/3/thirty / /4[0-9]/ s/4/fourty / /5[0-9]/ s/5/fifty / /6[0-9]/ s/6/sixty / /7[0-9]/ s/7/seventy / /8[0-9]/ s/8/eighty / /9[0-9]/ s/9/ninety / /[! ]0/ s/0// /[! ]1/ s/1/one/ /[! ]2/ s/2/two/ /[! ]3/ s/3/three/ /[! ]4/ s/4/four/ /[! ]5/ s/5/five/ /[! ]6/ s/6/six/ /[! ]7/ s/7/seven/ /[! ]8/ s/8/eight/ /[! ]9/ s/9/nine/ /!one/ s/bottles/bottle/g s/! /no /g s/!//g } /1[0-9]/ { s/10/ten/ s/11/eleven/ s/12/twelve/ s/13/thirteen/ s/14/fourteen/ s/15/fifteen/ s/16/sixteen/ s/17/seventeen/ s/18/eighteen/ s/19/nineteen/ } :noenum G h s/.\(.\).*/\1/g y/otfsen/OTFSEN/ G s/\(.\)\ \(.\).\(.*\ \)\(.*\)/\1\3\2\4/ s/ / /g P s/.*\ // /^a/ { s/^a// h b eenuma } /^b/ { s/^b// h b eenumb } /^c/ { s/^c// h b eenumc } :end ### colorized by sedsed, a debugger and code formatter for sed scripts ### original script: http://www2.eng.cam.ac.uk/~er258/code/sed/99-green-bottles.sed