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

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

Re: checar valores


From: lferreir1
Subject: Re: checar valores
Date: Tue, 01 Feb 2005 18:13:17 -0000
User-agent: eGroups-EW/0.82

OK Miranda, então vamos lá!

Olá pessoal, boa tarde!

É o seguinte, tenho um arquivo já filtrado de um ouro arquivo texto 
enorme.

Neste arquivo eu tenho dois campos:
O $1 é o número da linha ( cat -n )
O $2 precisa obrigatoriamente ter as sequências 00 01 99 voltando 
novamente para 00 01 99 e assim vai...
Exemplo:
# cat teste.txt
1     00
2     01
45    99
46    00
47    01
185   99
......
1865  00
1866  01
2030  99
#

Como faço para checar a sequência no campo 2? Lembrando que se estiver
faltando ( por exemplo ) um 99, quero receber uma mensagem dizendo 
que na linha X está faltando o 99, e o script tem que dar continuidade
da verificação do próximo registro.
Exemplo ( note que está faltando a linha 45 )
# cat teste.txt
1     00
2     01
46    00
47    01
185   99
......
1865  00
1866  01
2030  99
#

Atencao!, falta um 99 na linha 45

Grato outra vez pela atenção!
Luiz





--- Em address@hidden, Miranda <miranda@m...> 
escreveu
> você quer dizer que pode estar faltando algum ?
> como em 
> 00
> 01
> 00
> 01
> 99
> 
> faltando o primeiro dos 99 ?
> aí já complicou bastante
> 
> Por que você não posta o problema
> inicial ? 
> Esse seu primeiro passo pode estar complicando
> o restante do processo ...
> 
> 
> 
> On Monday 31 January 2005 13:04, lferreir1 wrote:
> > Oi Miranda, blz?
> >
> > Testei o seu comando, porém ele se perdeu a partir da linha onde
> > realmente nao tinha o 99 (linha 57), e após esta linha, foi
> > displayando "Erro na linha..." ( ver abaixo )
> >
> > >awk -f ./teste1 teste2
> >
> > Erro na Linha 57
> > Erro na Linha 58
> > Erro na Linha 59
> > Erro na Linha 60
> > Erro na Linha 61
> > Erro na Linha 62
> > Erro na Linha 63
> > Erro na Linha 64
> > .........
> > Erro na Linha 120
> > Erro na Linha 121
> > Erro na Linha 122
> > Erro na Linha 123
> > Erro na Linha 124
> >
> >  Outra coisa que não mencionei nesta dúvida, é o seguinte:
> >  O arquivo original que está com problemas tem 6387 registros.
> >  Filtrei este aquivo para que o resultado fosse o número da linha,
> >  e o dois primeiros campos, sendo que o segundo campo foi filtrado
> >  com o uniq.
> >
> > > cat -n arquivo | cut -c1-9 | uniq -f1
> >
> >  Sendo assim, o meu script precisa "checar" se no campo 2 está OK
> >  e se não estiver, "pego" o número da linha ($1 ) onde está 
faltando
> >  o próximo número e asim vai, até tratar todos os registros para
> > netão enviar um e-mail para o responsável acertar o arquivo 
original.
> >
> >  Expliquei ou compliquei??
> >
> >  Agradeço,
> > Luiz
> >
> >
> > --- Em address@hidden, Miranda <miranda@m...>
> > escreveu
> >
> > > Veja se é isso :
> > > [miranda@guitar miranda]$ cat /tmp/Dy
> > > 00
> > > 01
> > > 99
> > > 00
> > > 02
> > > 99
> > > 00
> > > 01
> > > 99
> > > 00
> > > 01
> > > 98
> > > 00
> > > 01
> > > 99
> > > 01
> > > 01
> > > 99
> > > 00
> > > 01
> > > 99
> > > [miranda@guitar miranda]$ cat /tmp/x.awk
> > > $1 != (NR-1)%3 && (NR - 1)%3 != 2 {printf"Erro na Linha %
d\n",NR }
> > > $1 != 99 && (NR - 1)%3 == 2 {printf"Erro na Linha %d\n",NR }
> > > [miranda@guitar miranda]$
> > >
> > > [miranda@guitar miranda]$ awk -f /tmp/x.awk /tmp/Dy
> > > Erro na Linha 5
> > > Erro na Linha 12
> > > Erro na Linha 16
> > >
> > > no arquivo de comandos do awk , x.awk temos
> > > (NR - 1) é o numero da linha quando contada a partir de zero
> > > (NR - 1)%3  é o resto da divisão por 3
> > >
> > > On Monday 31 January 2005 10:17, lferreir1 wrote:
> > > > Salve colegas!
> > > >
> > > > Tenho um arquivo texto com os seguintes conteúdos:
> > > > 00
> > > > 01
> > > > 99
> > > > 00
> > > > 01
> > > > 99
> > > > ..
> > > > ..
> > > > 00
> > > > 01
> > > > 99
> > > >
> > > > Como podem perceber, existe uma lógica sequencial, onde
> > > > obrigatoriamente
> > > > o primeiro registro tem que ser 00, o segundo 01, o terceiro 
é 99,
> > > > e começa novamente com 00, depois 01 ....
> > > >
> > > > Como faço para checar se este sequencial está certo?
> > > > Se tiver algum registro errado, tem que me dar uma mensagem, 
porém
> > > > continuar com a checagem.
> > > >
> > > > Adianto que o arquivo original foi filtrado pelo seguinte 
comando:
> > > > # cat -n arquivo | cut -c1-9 | uniq -f1
> > > >
> > > > E o valor da variavel do campo dois foi pelo awk $2,
> > > > portanto eu tenho tb o valor da linha em questão.
> > > >
> > > > Grato,
> > > > Luiz
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > --------------------------------------------------------------
----
> >
> > ---
> >
> > > > 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
> > > > --------------------------------------------------------------
----
> >
> > ---
> >
> > > > Links do Yahoo! Grupos
> >
> > ------------------------------------------------------------------
---
> > 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
> > ------------------------------------------------------------------
---
> >
> > Links do Yahoo! Grupos
> >
> >
> >




reply via email to

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