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

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

Re: awk


From: fsilva6
Subject: Re: awk
Date: Sun, 18 Jul 2010 14:52:26 -0000
User-agent: eGroups-EW/0.82

Segue a solucao...

FS=SEP_ORIG
while ((getline < AE) > 0)
{
      if ( $1 == "CHAMADA" )
      {
         #print "skip header ... "  
         continue
      } 
      # Faco a quebra pelos campos dt chamada, skill e passo 
      CHAVE=$1 SEP_ORIG $3 SEP_ORIG $4
      if ( CHAVE != CHAVE_ANT ) 
      {
         CHAVE_ANT=CHAVE
         if ( $3 == "FRUTA_A" ||  $3 == "FRUTA_B" ||  $3 == "FRUTA_C" )
         {
            if ( $4 == 0 ) 
            {   
                 # Para o filtro skill + passo zero, deisvio o registro para 
saida 1, qualquer outro registro ira para a saida 2
               print $0 > AS1
            }
            else
            {
              print $0  > AS2
            } 
         }                 
         else
         {
               print $0 > AS2 
         }
      }
      else
      {
         if ( $3 == "FRUTA_A" ||  $3 == "FRUTA_B" ||  $3 == "FRUTA_C" )
         {
            if ( $4 == 0 ) 
            {  
                # print temporario para exibir a duplicidade 
              print "Duplicidade  :" CHAVE
            }
         } 
         print $0 > AS2
      }
 }

--- Em address@hidden, "fsilva6" <fsilva6@...> escreveu
>
> Desculpa moacir, vc tem plena razão. Esqueci de mencionar a data não é 
> passada por parâmetro e para piorar é dinâmica.
> 
> Em relação ao script vou mesclar as dicas dos colegas.
> 
> primeiro vou separar todas as informações referentes a PERA.
> 
> exemplo:
> 
> limão|laranja|pera|20090127
> limão|laranja|pera|20090115
> limão|laranja|pera|20090101
> limão|laranja|pera|20090130
> mamao|pera|pera|20090130
> mamao|pera|pera|20090102
> 
> para fazer isso posso seguir da dica do amigo Supergrilo.
> 
> Depois com o auxilio do sort t";" k1 k2 k3 -u posso eliminar a duplicidade. 
> Acho que isso deve resolver o meu problema, vou testar e mando a resposta pra 
> vcs.
> 
> Agraço a todos pela força vocês são feras.
> 
> 
> 
> --- Em address@hidden, Moacir Souza <moacir.souza@> escreveu
> >
> >      fsilva6,
> > 
> >      Pode ser que eu tenha entendido errado, ou que você apenas tenha
> > esquecido de dizer, mas qual o parâmetro para dizer quais são as
> > menores datas? O usuário informa uma data e você calcula as menores
> > que ela? Você pega as duas menores datas (como é o caso do exemplo)?
> > Enfim... O sort vai funcionar no AIX sim, mas ainda assim não ficou
> > claro como eu vou determinar quem deve ficar separado em um conjunto e
> > no outro.
> > 
> > []'s,
> > Moacir Filho
> > 
> > 2010/7/2 fsilva6 <fsilva6@>:
> > > Amigão,
> > >       aplicar o filtro não é o meu maior problema no processo. Meu maior 
> > > problema é colocar as informações com a menor data no arquivo de 
> > > localizados.
> > >
> > > Abaixo um exemplo:
> > >
> > > Arquivo de entrada.
> > > limão|laranja|pera|20090127
> > > limão|laranja|pera|20090115
> > > limão|laranja|pera|20090101
> > > limão|laranja|pera|20090130
> > > jaca|pera|limão|20090130
> > > mamao|pera|pera|20090130
> > > mamao|pera|pera|20090102
> > > manga|pera|morango|20090130
> > >
> > > O arquivo de localizados deveria ficar desta forma:    
> > > limão|laranja|pera|20090101
> > > mamao|pera|pera|20090102
> > >
> > > Enquanto o arquivo de não localizados receberia os outros registros.
> > >
> > > limão|laranja|pera|20090127
> > > limão|laranja|pera|20090115
> > > limão|laranja|pera|20090130
> > > jaca|pera|limão|20090130
> > > mamao|pera|pera|20090130
> > > manga|pera|morango|20090130
> > >
> > > O grande problema é como pegar a menor data, por isso ordenei o arquivo 
> > > antes de iniciar o processamento com o comando sort (sort -t"|" -k3 -k4).
> > >
> > >
> > >
> > > --- Em address@hidden, Supergrilo <supergrilo@> escreveu
> > >>
> > >> Para funcionar em AIX o ideal seria usar ksh puro. Mas como não é minha
> > >> especialidade....
> > >>
> > >> Acho que isso deve funcionar...
> > >>
> > >> [0][fabio@Bankai:~/shell_scripts]$ cat feira.txt
> > >> limão|laranja|pera|20090127
> > >> limão|laranja|pera|20090115
> > >> limão|laranja|pera|20090101
> > >> limão|laranja|pera|20090130
> > >> jaca|pera|limão|20090130
> > >> mamao|pera|pera|20090130
> > >> mamao|pera|pera|20090102
> > >> manga|pera|morango|20090130
> > >>
> > >> [0][fabio@Bankai:~/shell_scripts]$ cat peraouuva.ksh
> > >> #!/bin/ksh
> > >>
> > >> for i in $(cat feira.txt); do
> > >>     echo ${i} | cut -d\| -f3 |grep -q pera && echo "${i}" >> localizados
> > >> || echo ${i} >> naolocalizado
> > >> done
> > >>
> > >> [0][fabio@Bankai:~/shell_scripts]$ cat localizados
> > >> limão|laranja|pera|20090127
> > >> limão|laranja|pera|20090115
> > >> limão|laranja|pera|20090101
> > >> limão|laranja|pera|20090130
> > >> mamao|pera|pera|20090130
> > >> mamao|pera|pera|20090102
> > >>
> > >> [0][fabio@Bankai:~/shell_scripts]$ cat naolocalizado
> > >> jaca|pera|limão|20090130
> > >> manga|pera|morango|20090130
> > >>
> > >>
> > >> Att:
> > >> Fábio Santos
> > >>
> > >> On 07/01/2010 10:26 PM, fsilva6 wrote:
> > >> >
> > >> >
> > >> > Pessoal,
> > >> > tenho um arquivo com o seguinte conteúdo.
> > >> >
> > >> > exemplo:
> > >> >
> > >> > limão|laranja|pera|20090127
> > >> > limão|laranja|pera|20090115
> > >> > limão|laranja|pera|20090101
> > >> > limão|laranja|pera|20090130
> > >> > jaca|pera|limão|20090130
> > >> > mamao|pera|pera|20090130
> > >> > mamao|pera|pera|20090102
> > >> > manga|pera|morango|20090130
> > >> >
> > >> > Preciso gerar dois arquivos, um chamado localizado e outro de não
> > >> > localizado.
> > >> >
> > >> > a)no arquivo de localizados teremos todos os registros onde o terceiro
> > >> > campo for igual a pera e a data se a menor data informada;
> > >> >
> > >> > b)no arquivo de não localizados teremos todos os registros onde o
> > >> > terceiro campo não for igual a pera é a data for diferente da a menor
> > >> > data informada, resumindo o else do item a;
> > >> >
> > >> > Eu comecei ordenando o arquivo da seguinte forma:
> > >> >
> > >> > sort -t"|" -k3 -k4
> > >> >
> > >> > Agora eu me vi totalmente sem saida, gostaria de sabe se alguém me dá
> > >> > alguma dica para inciar o resto da logica em AWK (o processo vai rodar
> > >> > no AIX)?
> > >> >
> > >> > Desde já obrigado.
> > >> >
> > >> >
> > >>
> > >>
> > >>
> > >> [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
> > >
> > >
> > >
> > 
> > 
> > 
> > -- 
> > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> > Moacir da Cruz Souza Filho
> > 
> > -Analista de Sistemas: Suporte Unix Avançado
> > Serviço Federal de Processamento de Dados
> > 
> > -Mestrando em Ciências da Computação
> > Universidade de Brasília
> > 
> > -Bacharel em Engenharia da Computação
> > Escola Politécnica de Pernambuco
> > Universidade de Pernambuco
> > 
> > -Técnico em Eletrônica
> > Escola Técnica Federal de Pernambuco
> > 
> > -Linux user #449600
> > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> >
>




reply via email to

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