AWK / Grep

DemonLord

Weeeeee!
Nabend! :D

Ich habe eine html Seite, die ich per fetch beziehe. Diese html-Seite hat u.A. Einträge wie diese:

Code:
    <tr>
          <td class="mengentext">25.09./26.09.2008:</td>
          <td class="mengentext">Vor vollendete Tatsachen gestellt</td>
        </tr>
    <tr>

Was ich will ist nach dem Datum zu "greppen" und als Ergebnis den Text in der darunter folgenden Zeile, ohne die HTML Tags zu bekommen. In diesem Fall also

In: 25.09./26.09.2008
Out: Vor vollendete Tatsachen gestellt


Wie kann ich das realisieren, bzw, kann jemand mir ein (passenden) Snipplet geben?

Vielen Dank!
-Chris.
 

Kamikaze

Warrior of Sunlight
Das hier ist GNU AWK spezifisch:
Code:
awk '/mengentext/ {str = $0; gsub(/[[:space:]]*:?<[^>]*>[[:space:]]*/, "", str); print(str)}'

Es unterscheidet nicht zwischen Datum und text, aber das geht natürlich auch.
 

DemonLord

Weeeeee!
Das hier ist GNU AWK spezifisch:
Code:
awk '/mengentext/ {str = $0; gsub(/[[:space:]]*:?<[^>]*>[[:space:]]*/, "", str); print(str)}'

Es unterscheidet nicht zwischen Datum und text, aber das geht natürlich auch.

Hey!

Danke - nur leider nein ;'(
Ein awk mit dem Snipplet auf mein Beispiel (ge-grep-ed wird nach "26.09.2008") ergibt nicht "Vor vollendete Tatsachen gestellt", sondern "25.09./26.09.2008". Ich brauche aber ersteres. Will also nach "26.09.2008" greppen und dann "Vor vollendete Tatsachen gestellt" erhalten.

Vielen Dank, vielleicht noch ein Update? ^^

-Chris.
 

walt

Well-Known Member
Wie waere es denn, wenn du mal ein wenig liest und probierst ?

Z.B. einfach so:
grep 26.09.2008 Dateiname.html -A1 | tail -1
 

MrFixit

aka uqs
Ich denke *jetzt* ist der beste Zeitpunkt, sich mal Perl anzusehen. LWP + HTML::Tree sind hier die Module, welche du nehmen willst. Dann funktioniert das ganze auch noch, wenn sich der Aufbau des HTML-Codes aendert.
 

MrFixit

aka uqs
Hier waere noch ein awk(1) only Hack fuer das "Problem" (aber bitte nicht produktiv verwenden)

Code:
% cat - | awk -F '<' '/25.09./ {x=NR+1} x==NR {sub(/.*>/, "", $2); print $2;}' 
    <tr>
          <td class="mengentext">25.09./26.09.2008:</td>
          <td class="mengentext">Vor vollendete Tatsachen gestellt</td>
        </tr>
    <tr>
Vor vollendete Tatsachen gestellt

Im Gegensatz zu den vorgestellten grep|tail hacks geht das auch, wenn du mehrere Hits in der Datei hast.
 
Oben