Questo script è quasi uguale al precedente, una volta che ognuna delle parole della riga è stata convertita in una ‘a’ (nello script precedente ogni lettera veniva cambiata in una ‘a’).
Una cosa interessante è che i programmi di wc hanno cicli
ottimizzati per ‘wc -c’, perciò sono più lenti nel contare
parole che caratteri. Il collo di bottiglia di questo script,
invece, è aritmetico, e quindi il conteggio delle parole
è più veloce (deve gestire numeri più piccoli).
Ancora una volta, le parti in comune non sono commentate per mostrare
l’importanza di commentare gli script di sed.
#!/usr/bin/sed -nf
# Converte le parole in a s/[ tab][ tab]*/ /g s/^/ / s/ [^ ][^ ]*/a /g s/ //g
# Le accoda all'hold space H x s/\n//
# Da qui in avanti è lo stesso di wc -c.
/aaaaaaaaaa/! bx; s/aaaaaaaaaa/b/g
/bbbbbbbbbb/! bx; s/bbbbbbbbbb/c/g
/cccccccccc/! bx; s/cccccccccc/d/g
/dddddddddd/! bx; s/dddddddddd/e/g
/eeeeeeeeee/! bx; s/eeeeeeeeee/f/g
/ffffffffff/! bx; s/ffffffffff/g/g
/gggggggggg/! bx; s/gggggggggg/h/g
s/hhhhhhhhhh//g
:x
$! { h; b; }
:y
/a/! s/[b-h]*/&0/
s/aaaaaaaaa/9/
s/aaaaaaaa/8/
s/aaaaaaa/7/
s/aaaaaa/6/
s/aaaaa/5/
s/aaaa/4/
s/aaa/3/
s/aa/2/
s/a/1/
y/bcdefgh/abcdefg/
/[a-h]/ by
p