#!/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