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

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

RES: [shell-script] notação científica - como lidar?


From: Julio Cezar Neves - DATAPREVRJ
Subject: RES: [shell-script] notação científica - como lidar?
Date: Thu, 1 Jun 2006 14:47:46 -0300

Ricardo,
há mais de 10 anos, fiz um bacalho que posteriormente um colega adaptou para
o Bash, mas não o testei após a migração.

Execute-o dentro do seu programa da seginte forma:

var=$(exp2dec.sh 5.00E06 6)
echo $var
5000000.00
var=$(exp2dec.sh 5.00E-06 6)
echo $var
.000005

Isto é, passe como parâmetros a expressão e a precisão que vc deseja. A
seguir seu código:

#!/bin/bash
# Recebe numeros no formato exponencial
# e transforma-os para o formato decimal.

[ $# -eq 2 ] || {
    echo "Uso: $0: <Numero> <Precisao>"
    exit 1
}
int=${1%E*}
dec=${1#*E}
sinal='*'
[ $(echo $dec | cut -c1) = '-' ] && {
    dec=$(echo $dec | cut -c2-)
    sinal=/
}
echo "scale=$2; $int $sinal 10 ^ $dec" | bc

Abraços,
Julio Cezar Neves
Tel:+55 21 2555-6148 / +55 21 8112-9988
Fax: +55 21 2555-6154
http://www.julioneves.com


| -----Mensagem original-----
| De: Ricardo Acosta [mailto:address@hidden]
| Enviada em: quinta-feira, 1 de junho de 2006 12:15
| Para: address@hidden
| Assunto: [shell-script] notação científica - como lidar?
| 
| 
| Camaradas,
| vejam o seguinte arquivo:
| ....
| acosta@clima$ cat data1
| @   offline veg parameters for Forest
| @.. SOIL TYPE-DEPENDENT STATIC PARAMETERS---------------------(ISTYPE)
| zdepth       0.02
| extfrac       1.00
| bee             2.5
| phsat         -0.2
| satco  5.00E-06
| poros     0.3500
| www      0.9000
| ...
| 
| Preciso fazer variar cada parâmetro ( zdepth, extfrac, bee, phsat,
| satco, poros, www) em um certo intervalo, com incremento definido.
| até aih consegui resolver tranquilo.
| utilizando "for", "seq" e "awk". Script mostrado a seguir.
| 
| No entanto pra resolver a substituição dos valores do 
| parâmetro: "satco"
| complicou, pq ele está em um formato diferente!
| 
| mesmo usando o "printf %E" (utilizado para notação científica).
| não obtive êxito. Visto que o "seq" não aceita este tipo de notação.
| alguém teria alguma sugestão?
| 
| []s
| acosta
| .........
| acosta@clima$ cat temp.sh
| #!/bin/bash
| Parametro=zdepth
| ValorInicial=1
| ValorFinal=3
| Incremento=1
| 
| for i in $(seq -w $ValorInicial $Incremento $ValorFinal)
| do
| awk -v param=$Parametro -v valor1=$i '
|               { if( $1==param ) { $2 = valor1}
|               print $0
|               }' data1
| done
| .........
| 
| 
| ---------------------------------------------------------------------
| 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]