#! /usr/bin/awk -f # # Qualifying the name as "_d_output" lest it be mistaken for parser of actual # metar format. function strip(s) { sub("^ *", "", s) sub(" *$", "", s) return s } /METAR pattern not found in NOAA data/ { failures++ exit } /[A-z][a-z]+ *: / { split($0, line, ":") key = strip(line[1]) val = strip(line[2]) values[NR] = val first[key] = NR last[key] = NR } /^ +/ { values[NR] = strip($0) last[key] = NR } END { if (failures) { print "metar fetch failed" > "/dev/stderr" } else { temp_string = values[first["Temperature"]] split(temp_string, temp_parts, " +") temp_celsius = temp_parts[1] temp_fahrenheit = (temp_celsius * (9 / 5)) + 32 print "temperature " temp_fahrenheit "°F" for (i=first["Phenomena"]; i<=last["Phenomena"]; i++) { phenomenon = values[i] if (phenomenon) { print "phenomenon " phenomenon } } } }