[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Comparar retorno de comando com conteúdo numérico de arquivo
From: |
nerobarrabas |
Subject: |
Re: Comparar retorno de comando com conteúdo numérico de arquivo |
Date: |
Wed, 07 Nov 2012 23:19:22 -0000 |
User-agent: |
eGroups-EW/0.82 |
Grande André!
Show de bola.
Funcionou "quase" perfeito.
Só esses dois detalhes:
- Caso o retorno do arquivo B seja menor que o do arquivo A, tem que retornar
OK. O script está retornando NÃO OK (no caso do Alarm notification)
- As strings tem que retornar numa linha só, assim:
NOT OK - Changes to lock:90, Lost of signal:30
Eu vou tentar mexer aqui, mas se puder dar uma sugestão, por favor.
De qualquer forma, já resolveu meu problema.
Grato.
Diramos
--- Em address@hidden, André Saunite <saunite@...> escreveu
>
> Opa...
>
> Eu tenho certeza que tem jeito melhor, e dependendo das strings que você
> tem (se tiver número no nome ou o caracter "|"), vai dar errado, mas
> aqui vai:
>
> $ cat a
> Changes to lock 10
> Lost of signal 500
> Alarm notification 30
> CRC4 error 0
>
> $ cat b
> Changes to lock 100
> Lost of signal 530
> Alarm notification 20
> CRC4 error 0
>
> $ ./doit.sh a a
> OK
>
> $ ./doit.sh a b
> NOT OK
> Changes to lock: -90
> Lost of signal: -30
> Alarm notification: 10
>
> $ cat doit.sh
> #!/bin/bash
> FILE1=$1
> FILE2=$2
> sdiff $FILE1 $FILE2 > /dev/null 2> /dev/null
> RESULT="$?";
> if [ $RESULT -eq 0 ] ; then
> echo "OK";
> exit 0;
> else
> echo "NOT OK";
> fi
> IFS=$'\n' ; for i in `sdiff $FILE1 $FILE2 | grep \| `; do
> LINE="`echo $i | sed -e 's/\s*|\s*/-/' -e 's/[A-Za-z ]//g' | bc `";
> NAME="`echo $i | sed -e 's/ [0-9].*//g'`";
> echo "$NAME: $LINE";
> done
>
> Abraços!
> André Saunite
>
> On 11/07/2012 03:56 PM, nerobarrabas wrote:
> >
> > Mestres,
> > Eu já procurei bastante e não consegui resolver o problema abaixo.
> > Tenho o seguinte retorno de comando (o qual já tratei):
> >
> > Changes to lock 10
> > Lost of signal 500
> > Alarm notification 30
> > CRC4 error 0
> > .
> > .
> > .
> > Esse retorno eu gravo num arquivo.
> > Em seguida, dou o comando de novo e me retorna, por exemplo:
> >
> > Changes to lock 100
> > Lost of signal 530
> > Alarm notification 20
> > CRC4 error 0
> > .
> > .
> > .
> > Notem que os valores da última coluna da 1ª e a 2ª linhas sofreram
> > acréscimo, o da 3ª sofreu decréscimo e o da 4ª permaneceu o mesmo.
> > O que eu preciso:
> >
> > - Comparar um a um os valores do retorno do comando com os do arquivo.
> > - Caso os do retorno sejam iguais ou menores que os do arquivo,
> > simplesmente substituir o conteúdo do arquivo com os novos valores e
> > retornar um OK.
> > - Caso sejam maiores, retornar um NÃO OK e a seguinte string (do
> > exemplo acima). com a diferença entre os valores atuais e os antigos:
> >
> > Erros encontrados: Changes to lock=90, Lost of signal=30
> >
> > - E substituir os novos valores no arquivo.
> > Notem que o arquivo tem mais linhas, mas sempre com quantidade de
> > linhas e strings fixas, alterando só os valores numéricos.
> >
> > Poderiam dar uma luz?
> >
> > Grato desde já.
> >
> > Diramos
> >
> >
>
>
>
> [As partes desta mensagem que não continham texto foram removidas]
>