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

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

Re: [shell-script] Comparar valores


From: Leandro Santiago
Subject: Re: [shell-script] Comparar valores
Date: Wed, 2 Dec 2009 21:34:39 -0200

ah sim, a comparação que fiz lá em cima, no if não imprime nada, já que é
falso :-) COloque um ! antes para imprimir :-)

if (( ! $(echo 2.0 == 1.006 | bc -l) )); then
echo isso é falso
fi

2009/12/2 Leandro Santiago <address@hidden>

> cara, o bash não faz cálculo em ponto flutuante (com vírgula), mas a
> calculadora bc faz.
>
> Dê uma olhada nisso:
> echo 2.0 == 2.000 | bc -l
> 1
>
> echo 2.0 == 1.23 | bc -l
> 0
>
> O bc executa e devolve na tela 1 se é true e 0 se é false. Mas isto é
> exatamente o oposto do que os comandos no linux retornam.
>
> Aí é sí inverter pra usar no shell:
>
> if (( $(echo 2.0 == 1.006 | bc -l) )); then
> echo isso é falso
> fi
>
> Aí vc pode até criar uma função que já deixe isso implicito, ou algo assim.
> Bem, é uma solução para o promeiro problema, mas isso só funciona no bash.
> Para usar o test, use em vez de (( )), [ ].
>
> 2009/12/2 Jair Santanna <address@hidden>
>
>
>>
>> Caros, tenho um if do tipo:
>> if [ $x -ge $y] && [$x -ge 10 ]; then
>> no entanto tanto $x quanto $y é uma variável vinda de um resultado do
>> bc (Ex: 187.456 e 42.53)! como eu faço pra essa comparação no if dar
>> certo?
>>
>> outra pergunta é o seguinte:
>> eu estou filtrando um arquivo retirando as linhas que contém "|" e
>> necessito ainda retirar as linhas que possuem um campo vazio.
>> Até a parte do "|" eu fiz ... mas não consigo "grepar" o campo vazio.
>> cat $arquivo | awk '{print $1 $2}' | grep -v "|"
>>
>> o arquivo original é:
>> 1 3805.3000 14623222.7282 3824.0322 | 1938.8375 9613106.3892
>> 3100.5009 | 337.2250 300369.1373 548.0594
>> 2 3488.9500 12899910.9205 3591.6445 | 1779.0625 8485836.0882
>> 2913.0458 | 394.3541 378363.1307 615.1122
>> 3 | 2056.0650 10657926.4011 3264.6479 | 345.0095 446662.5792
>> 668.3281
>> 4 2395.1500 7573923.9362 2752.0762 | 1197.5750 5881227.4358
>> 2425.1242 | 403.5875 411857.8703 641.7615
>> 5 3640.4250 13285972.4044 3644.9927 | 1863.7000 8278214.4591
>> 2877.1886 | 326.4041 253348.7635 503.3376
>> 6 | 2187.1375 11898716.2496 3449.4515 | 305.3950 274575.2704
>> 523.9993
>> 7 3049.7500 9555864.2435 3091.2560 | 1607.5750 6153174.9558
>> 2480.5594 | 286.1200 231689.1085 481.3409
>> 8 2690.8550 9990945.0768 3160.8456 | 1416.5650 5937139.9383
>> 2436.6247 | 277.1750 231953.6237 481.6156
>> 9 3359.5175 12599418.9737 3549.5660 | 1714.3962 8214373.9095
>> 2866.0729 | 527.6541 670845.0793 819.0513
>> 10 3876.0000 15016463.8461 3875.1082 | 1981.4650 9505323.7970
>> 3083.0705 | 394.6995 423310.0278 650.6227
>> 11 3146.9250 6242632.6044 2498.5260 | 1573.4625 6027675.8231
>> 2455.1325 |
>> 12 | |
>> 13 2209.9250 5495139.2506 2344.1713 | 1141.6375 3381980.1582
>> 1839.0160 | 234.1866 188748.0349 434.4514
>> 14 2435.2500 3321308.7756 1822.4458 | 1217.6250 3516355.7761
>> 1875.1948 | 328.1458 266152.6066 515.8998
>> 15 | | 324.0508 383277.1339 619.0938
>> 16 4117.0750 17223157.3531 4150.0791 | 2096.0400 11469113.2536
>> 3386.6079 | 483.7125 577614.8352 760.0097
>> 17 3931.5750 15587941.8916 3948.1567 | 2012.5500 10065638.0535
>> 3172.6389 | 538.3666 677216.6453 822.9317
>> 18 3593.5300 12922503.8411 3594.7884 | 1837.6900 8137569.8555
>> 2852.6426 | 494.6041 623128.9664 789.3851
>> 19 3752.8000 14978281.1897 3870.1784 | 1915.6500 9493854.7291
>> 3081.2099 | 386.3250 365627.9316 604.6717
>> 20 2290.5750 9786021.4301 3128.2617 | 1221.1000 5547771.9194
>> 2355.3708 | 399.6166 403369.8248 635.1140
>>
>> "o arquivo grepado é:"
>> 1 3805.3000 1938.8375 337.2250
>> 2 3488.9500 1779.0625 394.3541
>> 4 2395.1500 1197.5750 403.5875
>> 5 3640.4250 1863.7000 326.4041
>> 7 3049.7500 1607.5750 286.1200
>> 8 2690.8550 1416.5650 277.1750
>> 9 3359.5175 1714.3962 527.6541
>> 10 3876.0000 1981.4650 394.6995
>> 11 3146.9250 1573.4625
>> 13 2209.9250 1141.6375 234.1866
>> 14 2435.2500 1217.6250 328.1458
>> 16 4117.0750 2096.0400 483.7125
>> 17 3931.5750 2012.5500 538.3666
>> 18 3593.5300 1837.6900 494.6041
>> 19 3752.8000 1915.6500 386.3250
>> 20 2290.5750 1221.1000 399.6166
>>
>> perceba que a linha 11 precisa ser retirada
>>
>> grato pela ajuda
>>
>> JJ.Santanna
>>
>>  
>>
>
>


[As partes desta mensagem que não continham texto foram removidas]



reply via email to

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