#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