Shell script: gerar novas tabelas a partir de uma bruta

1. Shell script: gerar novas tabelas a partir de uma bruta

césar
cesarufmt

(usa Linux Mint)

Enviado em 07/05/2014 - 19:49h

Trata-se de uma tabela de dados de chuva fornecidos pela NASA.

Preciso organizar esses dados pra jogar em banco.

Abaixo uma simplificação. A tabela real tem 2223 dias, 31 latitudes e 25 longitudes.

Exemplo de Tabela de Dados Brutos com 3 dias, 3 latitudes e 10 longitudes.

0;0;3,5;7;5;9;2;4;5;6;2
1;4;5;3;6;7;9;3;4;5;5;4
1;9;6;4;5;8;6;3;1;2;3;7
1;7;9;7;6;8;5;4;3;2;1;4
2;4;6;3;1;6;7;4;8;9;6;8
2;9;3;5;6;7;8;9;0;1;2;3
2;7;5;4;3;1;2;3;4;6;7;9
3;4;4;3;2;8;9;6;5;3;4;3
3;9;2;1;6;7;9;0;2;5;3;6
3;7;6;2;7;9;7;0;1;2;3;7

A primeira linha são dados de longitude. Começa a contar da terceira coluna (3). Ignore os dois iniciais (0,0).
A partir da segunda linha são os dados em si que precisam ser organizador. A primeira coluna refere-se ao dia. A segunda coluna a latitude.
A terceira linha em diante são os dados resultantes daquela latitude com a respectiva longitude naquele dia.

Portanto. São 3 linhas pra cada dia. As latitudes sempre repetem (4,9,7); A longitude se repete até fechar o loog, depois começa a próxima longitude...

Assim, o objetivo é a partir da tabela bruta gerar os cruzamentos de dados em 4 colunas (dia, lat, dados,longitude). Exemplo de como deveria ficar:

Dia | Lat | Dados | Long

1;4;5;3
1;9;6;3
1;7;9;3 #acabou o primeiro cruzamento com a longitude 3. A próxima tabela deve usar a próxima (5);
1;4;3;5
1;9;4;5
1;7;7;5 #terminou segundo long. E deve seguir até terminar os longs. Depois começa no 2º dia.... etc
...
2;4;6;3
...
3;7;7;2 #ultima linha que deve ser gerada nesse exemplo...

####

Quem puder ajudar... já varei noites e noites...
Obrigado!


  


2. Re: Shell script: gerar novas tabelas a partir de uma bruta

euteste da silva
foxbit3r

(usa Solaris)

Enviado em 07/05/2014 - 22:31h

Mostra ai o que vc já tentou fazer.


3. Re: Shell script: gerar novas tabelas a partir de uma bruta

césar
cesarufmt

(usa Linux Mint)

Enviado em 07/05/2014 - 23:18h

foxbit3r escreveu:

Mostra ai o que vc já tentou fazer.


Pensei em algo do tipo...

#!/bin/bash
clear
for ((a=1; a <= 31 ; a++))
do
for ((b=3; b <= 27 ; b++))
do
cut -d ";" -f1,2,$b tabelabruta2.csv
done
done






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts