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: Mon, 31 Jan 2005 15:04:54 -0000
User-agent: eGroups-EW/0.82

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




reply via email to

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