Bom...

pensando um pouco mais bolei as seguinte solucoes

via GREP (nao traz todas as ocorrencias... por que posso ter outro the
a menos de 20 caracteres)

tr -d '\n' < electricity.txt | grep -oE '.{20}the.{20}'

via AWK (ficou bem bacana, fiz uma bruxaria...)

tr -d '\n' < electricity.txt | awk '{
 for(;;){ # laço infinito
  p=index(substr($0,add+1),"the");
  if(p==0) break; add += p;     
  printf "%43s\n",substr($0,add-20,43);
 }
}'

a ideia do awk é: eu procuro a posição de um padrao. quando encontro,
eu vou imprimir 20 caracteres antes e 23 depois da posição desse
padrão. ai vou procurar novamente, mas adiante, por isso o meu index
recebe um substr, no primeiro ciclo, max será 0, então eu procuro em
toda a $0.

estou usando tr -d '\n' para ficar mais compacto o resultado, o visual
fica melhor IMHO.

acho q pode ser particularmente util este tipo ideia em arquivos de
log, onde posso ter varios tipos de mensagens de erro, em diversas
posições.

[]´s Tiago

On 2/7/07, Tiago Barcellos Peczenyj <[EMAIL PROTECTED]> wrote:
> Miranda, eu fiz assim:
>
> tr -d '\n' < electricity.txt  | sed -n
> 's/.\{20\}the.\{20\}/\n&/g;/the/p' | cut -c1-43
>
> é claro que existem outras formas melhores ate, mas esta ficou bonita
> (mas não completa).
>
> tentei com awk usando substr mas ficou uma maçaroca
>
> On 2/7/07, Miranda <[EMAIL PROTECTED]> wrote:
> > Estava praticando tutorial de uma outra linguagem de programação
> > e deparei com esse exercício que achei bem interessante
> > e que levei a cabo usando essa linguagem.
> > Se alguém quiser usar shell-script para fazer será um exercício
> > interessante ,creio eu.
> > Dado um texto :
> > que você pode usar esse aqui , que é legal :
> > http://www.comp.leeds.ac.uk/Perl/Misc/electricity.txt
> > fazer um script que tenha como saida algo como aqui :
> >
> > discovered (this is the truth) that when he
> > t kinds of metal to the leg of a frog, an e
> > rrent developed and the frog's leg kicked,
> >  longer attached to the frog, which was dea
> > normous advances in the field of amphibian
> > ch it hop back into the pond -- almost.  Bu
> > ond -- almost.  But the greatest Electrical
> > ectrical Pioneer of them all was Thomas Edi
> >
> > Que mostra parte das linhas em que aparece o padrao   "the"
> > alinhado na coluna.
> >
> > seria interessante também para testar, que o padrao
> > seja passado como parametro para o programa.
> > Alguém tem um tempinho para perder(ganhar) ?  :o)
> >
> > P.S.:
> > Se alguém quiser a página onde se encontra esse exercício
> > com dicas , mas da outra linguagem , só mandar um PVT.
> >
> >
> >
> >
> >
> > ---------------------------------------------------------------------
> > Esta lista não admite a abordagem de outras liguagens de programação, como 
> > perl, C etc. Quem insistir em não seguir esta regra será moderado sem 
> > prévio aviso.
> > ---------------------------------------------------------------------
> > Sair da lista: [EMAIL PROTECTED]
> > ---------------------------------------------------------------------
> > Esta lista é moderada de acordo com o previsto em 
> > http://www.listas-discussao.cjb.net
> > ---------------------------------------------------------------------
> > Servidor Newsgroup da lista: news.gmane.org
> > Grupo: gmane.org.user-groups.programming.shell.brazil
> >
> >
> > Links do Yahoo! Grupos
> >
> >
> >
>
>
> --
> Tiago B Peczenyj
> Linux User #405772
>
> # cd /pub
> # more beer
>


-- 
Tiago B Peczenyj
Linux User #405772

# cd /pub
# more beer

Responder a