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

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

Re: [shell-script] awk: linhas pares e ímpares


From: Bruno Gola
Subject: Re: [shell-script] awk: linhas pares e ímpares
Date: Tue, 7 Feb 2006 16:48:59 -0200

Tiago,

MAS, o que foi pedido foi um exemplo de como usar o AWK para verificar se
uma determinada linha é par ou impar. Vamos supor que antes desse if venha
outra condição que faça o awk não chegar a essa condição do PAR ou IMPAR.
Por exemplo, o cara vai analisar um script mas quer ignorar os comentários,
tudo isso usando apenas o awk. Ele usaria o NR, pois ficaria algo assim (não
conheço suficientemente o awk, portanto vai em pt msm):

se (não começa com #)
     se (NR %2 == 0)
          print é par
     senão
          print é impar
fim

Entende ? Tem casos em que a sua variavel var no lugar de NR não daria
certo.

Nada pessoal :-)

Até mais,

On 2/7/06, Tiago Barcellos Peczenyj <address@hidden> wrote:
>
> Bueno, o AWK é orientado a fluxo de dados, logo ele executa o seu corpo {}
> a
> cada linha. Como os arquivos começam com uma linha de numero impar, então
> posso supor que a proxima é par... dai não acho que seja necessario
> comparar
> o NR e sim fazer um laço que troque o valor de uma variavel de forma
> ciclica
> a cada nova linha de acordo com o que eu estou fazendo.
>
> Li toda a thread, só acho que não é necessario comparar o valor do modulo
> do
> NR por 2, estou dando a minha humilde opinião :)
>
> Em 07/02/06, Bruno Gola <address@hidden> escreveu:
> >
> >  Tiago, e aonde entra a questão da linha par ou linha impar nesse seu
> awk?
> >
> > Acho que você não leu toda a thread =)
> >
> > Té mais,
> >
> > On 2/7/06, Tiago Barcellos Peczenyj <address@hidden> wrote:
> > >
> > > Pra que usar NR ?
> > >
> > > awk '{if (var == "isso") {var="aquilo"} else { var="isso" } ; print
> var
> > }'
> > > arquivo
> > >
> > > Em 07/02/06, Eliphas Levy Theodoro <address@hidden> escreveu:
> > > >
> > > >  Rodrigo Monteiro escreveu:
> > > > > Gostaria de saber (se possível em awk) como pegar um arquivo texto
> e
> > > > > se for uma linha ímpar imprimir isso na tela se for par imprimir
> > > > > aquilo.
> > > >
> > > > Simples, você pega o número da linha e divide por dois. Se tiver
> > resto,
> > > > faz algo, se não tiver, faz outra coisa.
> > > >
> > > > Em shell, só pra não ficar off-de-tudo:
> > > >
> > > > ---começa parouimpar.sh
> > > > #!/bin/sh
> > > > i=0
> > > > while read line; do
> > > >   i=$((i+1))
> > > >   if [ "$((i%2))" == "0" ]; then
> > > >     echo -n "p: "
> > > >   else
> > > >     echo -n "i: "
> > > >   fi
> > > >   echo $line
> > > > done < .bashrc
> > > > ---termina parouimpar.sh
> > > >
> > > > eliphas@skyfoobar$ ./parouimpar.sh
> > > > i: # .bashrc
> > > > p:
> > > > i: # User specific aliases and functions
> > > > p:
> > > > i: alias rm='rm -i'
> > > > p: alias cp='cp -i'
> > > > [...]
> > > > eliphas@skyfoobar$
> > > >
> > > > Em AWK, a variável NR é o número da linha corrente.
> > > >
> > > > $ awk '{ if (NR%2) printf("i: "); else printf("p: "); print $_; }'
> > > .bashrc
> > > >
> > > > --
> > > > Eliphas
> > > >
> > > >
> > >
> >  ---------------------------------------------------------------------
> > > > 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
> > > >
> > > >
> > > >
> > > >
> > > >  *Yahoo! Grupos, um serviço oferecido por:*  PUBLICIDADE
> > > >  <
> > >
> >
> http://br.ard.yahoo.com/SIG=12fmemfha/M=393477.7870451.8719931.2369893/D=brclubs/S=2137111254:HM/Y=BR/EXP=1139336596/A=3254979/R=0/id=noscript/SIG=12k5j3olb/*http://www.momentumquiz.com.br/index.php?md5ref=372BBEE98E9544bd8B2F9E87847EEEBE_3
> > > >
> > > > ------------------------------
> > > > *Links do Yahoo! Grupos*
> > > >
> > > >    - Para visitar o site do seu grupo na web, acesse:
> > > >    http://br.groups.yahoo.com/group/shell-script/
> > > >
> > > >    - Para sair deste grupo, envie um e-mail para:
> > > >    address@hidden<
> > > address@hidden?subject=Unsubscribe>
> > > >
> > > >    - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
> > > >    Serviço do Yahoo! <http://br.yahoo.com/info/utos.html>.
> > > >
> > > >
> > >
> > >
> > > --
> > > Tiago B Peczenyj
> > > Linux User #405772
> > >
> > > echo 435991959574767208964049173891616024402182829083447460457482P |
> dc
> > >
> > >
> > > [As partes desta mensagem que não continham texto foram removidas]
> > >
> > >
> > >
> > > ---------------------------------------------------------------------
> > > 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
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> >
> >
> > --
> > Bruno Fialho Marques Gola <address@hidden>
> > http://www.brunogola.com.br
> > Cel: (11) 9294-5883
> >
> >
> > [As partes desta mensagem que não continham texto foram removidas]
> >
> >
> >
> >  ---------------------------------------------------------------------
> > 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
> >
> >
> >
> >
> >  *Yahoo! Grupos, um serviço oferecido por:*  PUBLICIDADE
> > <
> http://br.ard.yahoo.com/SIG=12fo50rqt/M=396547.7942355.8792354.2369893/D=brclubs/S=2137111254:HM/Y=BR/EXP=1139343450/A=3283959/R=2/id=noscript/SIG=154fpp59v/*http://lt.dell.com/lt/lt.aspx?CID=11234&LID=306520&DGC=BA&DGSeg=DHS&DURL=http://www1.la.dell.com/content/products/category.aspx/desktops?c%3dbr%26l%3dpt%26s%3ddhs
> >
> > ------------------------------
> > *Links do Yahoo! Grupos*
> >
> >    - Para visitar o site do seu grupo na web, acesse:
> >    http://br.groups.yahoo.com/group/shell-script/
> >
> >    - Para sair deste grupo, envie um e-mail para:
> >    address@hidden<
> address@hidden?subject=Unsubscribe>
> >
> >    - O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
> >    Serviço do Yahoo! <http://br.yahoo.com/info/utos.html>.
> >
> >
>
>
> --
> Tiago B Peczenyj
> Linux User #405772
>
> echo 435991959574767208964049173891616024402182829083447460457482P | dc
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>
>
>
> ---------------------------------------------------------------------
> 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
>
>
>
>
>
>
>
>


--
Bruno Fialho Marques Gola <address@hidden>
http://www.brunogola.com.br
Cel: (11) 9294-5883


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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