Vinzenz Mai: Kein Problem, das sich nicht lösen lässt

Beitrag lesen

Hallo Dennis,

Die Zeile wo der Quelltext und der gesuchte Wert steht ist nicht einzigartig:
<td width=50>22.3</td>

Das Tabellenobjekt td kommt mit dem width-Wert öfters im Quelltext vor daher kann ich damit nichts anfangen denke ich mal.

Aber eine Zeile davor ist einzigartig:

<td width=44% align=left><strong>&nbsp;Temperatur</strong>&nbsp;(°C)&nbsp;</td>

Die kann ich ganz speziell mit:

cat 49X2499.html | grep Temperatur\<\/st

herausfiltern. Soweit so gut, also weiß ich nun das die darauf folgende Zeile die gesuchte ist... aber wie komme ich da nun ran?

das ist doch schon was. Und Du kommst da dran.

Wenn ich die nächste Zeile irgendwie schnappen könnte wäre echt schon was geschaft denn mit:

cat 49X2499.html | grep  22.3 | cut -d > -f 2 | cut -d < -f 1

  

> kann ich die Temperatur sehr gut isolieren :)  
  
Die GNU-Variante von grep kann wunderbar mit dem Kontext gefundener Zeilen umgehen, für Dich ist die Option  
  
  -A NUM  
  --after-context=NUM  
  
interessant, siehe man grep  
  
cat 49X2499.html | grep -A 1 Temperatur\<\/st  
  
liefert Dir  
  
<td width=44% align=left><strong>&nbsp;Temperatur</strong>&nbsp;(°C)&nbsp;</td>  
<td width=50>22.3</td>  
  
als Ausgabe. Du brauchst nur die letzte Zeile.  
Deswegen schickst Du das ganze durch tail und lässt Dir mit dessen Option -n 1 nur die letzte Zeile ausfiltern, siehe man tail:  
  
cat 49X2499.html | grep -A 1 Temperatur\<\/st | tail -n 1  
  
Wie Du daraus die Temperatur ermittelst hast Du ja schon geschrieben:  
  
# Backslash am Ende einer Zeile maskiert das Zeilenendezeichen und sorgt somit  
# für die Fortsetzung des Kommandos auf der nächsten Zeile  
$cat 49X2499.html \  
| grep -A 1 Temperatur\<\/st \  
| tail -n 1  
| cut -d \> -f 2 \  
| cut -d \> -f 1  
22\.3  
  
Das geht gut voran. Weiter so!  
  
  
Freundliche Grüße  
  
Vinzenz