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

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



reply via email to

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