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

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

Re: [shell-script] Re: checar valores


From: Miranda
Subject: Re: [shell-script] Re: checar valores
Date: Tue, 1 Feb 2005 17:25:43 -0200
User-agent: KMail/1.6.2

não consigo vislumbrar uma soluçao
simples em shell para esse problema
Usaria , talvez ponteiros e/ou arrays em linguagem C.

On Tuesday 01 February 2005 16:13, lferreir1 wrote:
> 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
>
> ---------------------------------------------------------------------
> 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]