Arquivos ASC

1. Arquivos ASC

Fabiana Silva Finoti
fabizinha123

(usa Arch Linux)

Enviado em 25/06/2019 - 19:47h

Anexo a este documento encontra-se um arquivo no formato citado que armazena medições de vento em alguns horários do dia. Sabendo-se que
a antepenúltima coluna indica a direção do vento e a penúltima coluna indica a velocidade do vento, desenvolva um script em AWK que processe arquivos
deste tipo, indicando, para cada direção de vento, qual foi a velocidade média das leituras.



Arquivo:
(index -> (IDN, Latitude, Longitude, Time, WDIR, WSPD, GST))
IDN, Latitude[unit="deg"], Longitude[unit="deg"], Time[fmt="yyyy MM dd HH mm" colspan="5"], WDIR[unit="deg" miss="MM"], WSPD[unit="m/s" miss="MM"], GST[unit="m/s" miss="MM"]
41001 34.68 -72.66 2007 07 17 20 50 210 4.0 6.0
41004 32.5 -79.09 2007 07 17 20 50 210 6.0 MM
41008 31.4 -80.87 2007 07 17 21 50 170 7.0 8.0


  


2. Re: Arquivos ASC

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 26/06/2019 - 00:22h


fabizinha123 escreveu:

Anexo a este documento encontra-se um arquivo no formato citado que armazena medições de vento em alguns horários do dia.
Sabendo-se que:
a antepenúltima coluna indica a direção do vento.
a penúltima coluna indica a velocidade do vento.
desenvolva um script em AWK que processe arquivos deste tipo, indicando, para cada direção de vento, qual foi a velocidade média das leituras.
Arquivo:
(index -> (IDN, Latitude, Longitude, Time, WDIR, WSPD, GST))
IDN, Latitude[unit="deg"], Longitude[unit="deg"], Time[fmt="yyyy MM dd HH mm" colspan="5"], WDIR[unit="deg" miss="MM"], WSPD[unit="m/s" miss="MM"], GST[unit="m/s" miss="MM"]
IDN Lat Long Time WDIR WSPD GTS
41001 34.68 -72.66 2007 07 17 20 50 210 4.0 6.0
41004 32.50 -79.09 2007 07 17 20 50 210 6.0 MM
41008 31.40 -80.87 2007 07 17 21 50 170 7.0 8.0


Boa noite fabizinha123.
Não entendi o que vc necessita....
O ultimo campo é a velocidade minima do vento?
Qdo WDIR, for igual, soma as WSPD (WIND SPEED) e tira a média?
De um exemplo...

Att.: Marcelo Oliver


3. Re: Arquivos ASC

Fabiana Silva Finoti
fabizinha123

(usa Arch Linux)

Enviado em 26/06/2019 - 07:25h

Bom dia!!!
Estou querendo fazer um script em awk que leia as posicões do vento ( coluna 9, os valores 210 e 170) e se encontrar direção repetida, quero calcular e média das velocidades (coluna 10, os valores 4, 6 e 7). Essa média por exemplo seria com a direção do 210 que aparece duas vezes, ai a velocidade média seria (4+6)/2. Ai esse script tem que ser para um caso geral onde pode se ter n linhas.
Desde já, muito obrigada!!!

Atenciosamente,
Fabizinha


4. Re: Arquivos ASC

erick Darko
erickDarko

(usa Debian)

Enviado em 26/06/2019 - 10:21h

Sendo a decima coluna referente a WSPD(que acredito que seja WIND SPEED).
Calcula a média da velocidade dos ventos dada pelo arquivo index?(Seja qual for o formato desse arquivo)
De permissão para executar o script com o comando:
chmod +x script
./script "nome do arquivo"


#!/usr/bin/awk -f
{
if (NR > 2) { # A partir da segunda linha, soma os valores
n+=$10
i+=1 # Para calcular a media para cada valor a variavel i é somada por 1
printf("%d\n", $10) # imprime os valores da decima coluna
}
} END {printf("Total: %d\nMedia: %.1f\n", n, n/i)}



5. Re: Arquivos ASC

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 27/06/2019 - 17:29h

fabizinha123 escreveu:

Bom dia!!!
Estou querendo fazer um script em awk que leia as posicões do vento ( coluna 9, os valores 210 e 170) e se encontrar direção repetida, quero calcular e média das velocidades (coluna 10, os valores 4, 6 e 7). Essa média por exemplo seria com a direção do 210 que aparece duas vezes, ai a velocidade média seria (4+6)/2. Ai esse script tem que ser para um caso geral onde pode se ter n linhas.
Desde já, muito obrigada!!!
Atenciosamente,
Fabizinha


Boa tarde Fabizinha.
"Parece" que deu certo....
Testei com o seu arquivo de exemplo (03 linhas), e obtive o seguinte resultado:
awk -f AWK_VENTO.awk vento  

WWay NWind AVG
210 02 5.000
170 01 7.000

Com o comando abaixo, gerei o arquivo "vento.txt" com 100.000 linhas, para testes.
awk 'BEGIN{for(i=1;i<=100000;i++) printf "%04d %.2f %.2f 2007 07 17 20 50 %03d %.2f %.2f\n" ,i,int(100 * rand()),int(100 * rand()),int(200 * rand()),int(10 * rand()),int(10 * rand()) }' >> vento.txt 


cat AWK_VENTO.awk
BEGIN{
printf "WWay\tNWind\tAVG\n";
}
{
wdir[$9]++;count[$9]+=$10;
}
END{
for(var in wdir)
printf "%03d\t%02d\t%.2f\n" ,var,wdir[var],(count[var]/wdir[var]);
}

Gere um arquivo com o conteúdo acima "AWK_VENTO.awk"
Execute da seguinte forma
awk -f AWK_VENTO.awk seu_arquivo_vento  

Se preferir, tudo em uma linha:
awk 'BEGIN{printf "WWay\tNWind\tAVG\n"}{wdir[$9]++;count[$9]+=$10}END{for(var in wdir)printf "%03d\t%02d\t%.2f\n" ,var,wdir[var],(count[var]/wdir[var])}' vento 

Importante! Leia => echo -e "$(lynx --dump goo.gl/a9KeFc|sed -nr '/^[ ]+Se/,/dou.$/p')"
É isso!
Att.: Marcelo Oliver






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts