Benutzer-Werkzeuge

Webseiten-Werkzeuge


snippets:bash:calculate_tendency

Dies ist eine alte Version des Dokuments!


Calculate tendency of weather data

cat wetter.werte
13.05.2013 10:16 8,9 984,1 92,5
13.05.2013 10:17 7,5 985,3 92,6
13.05.2013 10:18 6,3 947,7 94,6
13.05.2013 10:19 9,4 832,5 95,5
tail -n70 wetter.werte | \
head -n20 | \
sed 's/,/\./g' | \
awk '
  function abs(x){
    return ((x < 0.0) ? -x : x)
  }
{
  temperature[NR]=$3;
  sum_temperature+=$3;
  pressure[NR]=$4;
  sum_pressure+=$4;
  humidity[NR]=$5;
  sum_humidity+=$5
}
END{
  avg_temperature=sum_temperature/NR;
  last_temperature=temperature[NR];
  variance_temperature=abs(avg_pressure-last_pressure);
  avg_pressure=sum_pressure/NR;
  last_pressure=pressure[NR];
  variance_pressure=abs(avg_pressure-last_pressure);
  avg_humidity=sum_humidity/NR;
  last_humidity=humidity[NR];
  variance_humidity=abs(avg_humidity-last_humidity);
 
  if (variance_temperature<0.5)
    trend_temperature="→";
  else if (avg_temperature>last_temperature)
    trend_temperature="↓";
  else if (avg_temperature<last_temperature)
    trend_temperature="↑";
  else
    trend_temperature="→";
 
  if (variance_pressure<1.0)
    trend_pressure="→";
  else if (avg_pressure>last_pressure)
    trend_pressure="↓";
  else if (avg_pressure<last_pressure)
    trend_pressure="↑";
  else
    trend_pressure="→";
 
  if (variance_humidity<1.0)
    trend_humidity="→";
  else if (avg_humidity>last_humidity)
    trend_humidity="↓";
  else if (avg_humidity<last_humidity)
    trend_humidity="↑";
  else
    trend_humidity="→";
 
  print "Temperature AVG (1h): " avg_temperature " Trend: " trend_temperature " (" last_temperature-avg_temperature ")" "\nPressure AVG (1h): " avg_pressure " Trend: " trend_pressure " (" last_pressure-avg_pressure ")" "\nHumidity (1h): " avg_humidity " Trend: " trend_humidity " (" last_humidity-avg_humidity ")"
}' | \
sed '/[0-9]\./s/\./,/g'
snippets/bash/calculate_tendency.1368450261.txt.gz · Zuletzt geändert: (Externe Bearbeitung)