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: Jair Santanna
Subject: Re: [shell-script] Comparar valores
Date: Thu, 3 Dec 2009 00:41:18 -0200

Leandro eu pensei em truncar o número e somar +1 e aí comparar com o outro número.
Você pode me ajudar nisso?
Preciso saber a posição do ponto e após isso filtrar até esta posição

pensei em fazer: echo ${numero: $[0]:$[posicaoPonto]}
como eu pego a posição do ponto...

se alguem puder me ajudar, ainda preciso saber como eu posso retirar uma linha de um arquivo que contenha em uma específica coluna um espaço em branco (vazio)

Muito grato a todos que contribuem e também aos que tem dúvidas!

JJ.Santanna

Em 02/12/2009, às 21:34, Leandro Santiago escreveu:

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]



------------------------------------

---------------------------------------------------------------------
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
---------------------------------------------------------------------
Servidor Newsgroup da lista: news.gmane.org
Grupo: gmane.org.user-groups.programming.shell.brazil

Links do Yahoo! Grupos






reply via email to

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