[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Comparar retorno de comando com conteúdo numérico de
From: |
André Saunite |
Subject: |
Re: [shell-script] Comparar retorno de comando com conteúdo numérico de arquivo |
Date: |
Wed, 07 Nov 2012 16:32:13 -0600 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:16.0) Gecko/20121026 Thunderbird/16.0.2 |
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]