[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [shell-script] Operações em tabela
From: |
MrBiTS |
Subject: |
Re: [shell-script] Operações em tabela |
Date: |
Wed, 09 Jul 2008 09:07:24 -0300 |
User-agent: |
Thunderbird 2.0.0.14 (X11/20080505) |
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
| Olá pessoal, tor fazendo migração de um arq .txt pra outro.
| O primeiro é temperatura em Kelvin mais ou menos assim:
|
| 295,51 297,95 292,33 294,77
| 296,45 300,18 293,76 298,13
|
| Preciso passar ele pra Celsius, ou seja, subtrair o valor de cada
| coluna do arquivo anterior por 273,15 o que ficaria assim:
|
| 22,36 24,80 19,18 21,62
| 23,30 27,03 20,61 24,98
|
| 295,51-273,15=22,36
| 296,45-273,15=23,30 e assim por diante, mas o arq eh imenso.
|
| Tentei fazer com xargs, expr e naum consegui..
|
| Quem poder dá uma dica ficarei muito grato...
| Se alguém tiver dúvidas sobre os arquivos, posso esclarecer..
| Abraço a todos...
Não entendi onde xargs entra nisso, mas tudo bem.
Seu problema está no separador decimal. Vírgula não é separador decimal padrão
de nenhum sistema computacional que eu conheça. Ela
entra somente na internacionalização das coisas. Então, seu primeiro passo é
mudar seu arquivo, trocando tudo o que for vírgula por
ponto. Pode fazer algo assim:
~ $ sed -i 's/\,/\./g' arquivo.txt
se sua versão do sed suportar o parâmetro -i ou
~ $ tr -s ',' '.' < arquivo.txt > arquivotrocado.txt
Depois, você fará uma leitura sequencial do arquivo, registro a registro, e
poderá utilizará o bc para efetuar os cálculos, mais ou
menos assim:
~ $ echo "295.51-273.15" | bc
que resulta em 22.36.
Nas mensagens antigas da lista há soluções com awk e outras, até mais
elegantes. Procure-as.
- --
Um abraço
.0. MrBiTs - address@hidden
..0 GnuPG -
http://keys.cardboard.net:11371/pks/lookup?op=get&search=0xAC37715A6DD1F186
000 http://www.mrbits.com.br
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFIdKn8rDdxWm3R8YYRAny2AKCEynlaFnzS4zx8DRZkA5lP8GeNhQCeIL5R
R61ETUQJJr88ldHlefvato0=
=APeM
-----END PGP SIGNATURE-----