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: Miranda
Subject: Re: [shell-script] awk: linhas pares e ímpares
Date: Tue, 07 Feb 2006 16:54:20 -0200

Isso mesmo .
[root@guitar tmp]# cat princ
1 - 6
2 -  6
3 -   6
4 -    6
5 -     6
6 -      7
7 -       7
8 -        7
9 -         7
10 -          7
11 -           7
12 -            7
13 -             7
14 -              7
15 -               7
16 -                8
17 -                 8
18 -                  8
19 -                   8
20 -                    8
[root@guitar tmp]# cat cmd.awk
BEGIN{IMPAR=0};
IMPAR == 0 {print $0"isso" ; IMPAR=1 ; next}
IMPAR == 1 {print $0"aquilo" ; IMPAR=0}
[root@guitar tmp]# awk -f cmd.awk princ
1 - 6isso
2 -  6aquilo
3 -   6isso
4 -    6aquilo
5 -     6isso
6 -      7aquilo
7 -       7isso
8 -        7aquilo
9 -         7isso
10 -          7aquilo
11 -           7isso
12 -            7aquilo
13 -             7isso
14 -              7aquilo
15 -               7isso
16 -                8aquilo
17 -                 8isso
18 -                  8aquilo
19 -                   8isso
20 -                    8aquilo

On Tue, 2006-02-07 at 16:35 -0200, Tiago Barcellos Peczenyj 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
> 
> 
> 
> 
>  
> 
> 
-- 
Miranda <address@hidden>



reply via email to

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