[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
> > =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
> >
>