#!/bin/sed -nf
#
# Note que estamos usando borda no script (\b), assim se
# procurarmos por sed e tiver sedsed, o resultado vai ser 0
#
# Thobias Salazar Trevisan <thobias at lcp.coppe.ufrj.br>
# se for a primeira linha zeramos o contador.
# o contador fica sempre no reserva
1 {
x
s/^/0/
x
}
# se for a palavra que procuramos fizemos
# no exemplo estamos procurando pela palavra 'sed'
/\bsed\b/ {
: c
s/\bsed\b//
t a
# substituimos a palavra por nada, se ocorreu sucesso na substituição
# pulamos pro label 'a', senão, vamos pro label 'b'
b b
# chegamos aqui se ocorreu sucesso na substituição. Assim pegamos o valor
# que esta no reserva e fizemos valor + 1
: a
x
# aqui comeca o algoritmo pra incrementar o numero
# link do algoritmo para contar.
# http://sed.sf.net/grabbag/scripts/incr_num.sed
: p
s/9\(_*\)$/_\1/
t p
s/^\(_*\)$/0\1/
s/ \(_*\)$/0\1/
s/8\(_*\)$/9\1/
s/7\(_*\)$/8\1/
s/6\(_*\)$/7\1/
s/5\(_*\)$/6\1/
s/4\(_*\)$/5\1/
s/3\(_*\)$/4\1/
s/2\(_*\)$/3\1/
s/1\(_*\)$/2\1/
s/0\(_*\)$/1\1/
s/_/0/g
# como a palavra pode aparecer mais de 1 vez na mesma linha, pulamos
# pro label 'c' pra ver se existe mais
x
t c
}
: b
# se for última linha, imprime o que tem no reserva (o contador)
$ {
x
p
}
### colorized by sedsed, a sed script debugger/indenter/tokenizer/HTMLizer