shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Diversão


From: Miranda
Subject: Re: [shell-script] Diversão
Date: Wed, 07 Feb 2007 15:20:30 -0200

Acho que só existe um probleminha aqui :
Imagine que houvesse um "the"  começando na 10.a posicao
,primeira linha
Seria necessario imprimir 10 brancos antes ...


On Wed, 2007-02-07 at 15:04 -0200, Tiago Barcellos Peczenyj wrote:
> 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 <address@hidden> 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 <address@hidden> 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: address@hidden
> > > ----------------------------------------------------------
> > > 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
> 
> 
> 
>  
-- 
Miranda <address@hidden>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]