jens4ever
Goto Top

Linux: SED: String mit zwei Pattern exportieren

Moin zusammen,

ich habe mehrere Varianten ergooglet und ausprobiert, bin aber zu blöde... Wo ist mein Fehler?

Ich möchte aus einem Website Code einen Wert fischen mit 2 Pattern. (Davor und danach)

Original-Code:
</th><th class="red">-0,20 <span>EUR</span></th><th class="red last">-1,27 <span>%</span></th></tr></table>  


sed -n '/th class="red last">=A/,/<span%>/p' /home/pi/dateien/test/test.txt > /home/pi/autowallpaper/test/test2.txt

Mein erwartetes Ergebnis wäre:
-1,27

Allerdings ist die test2.txt mit 0 Bytes leer.

Warum?

Danke für eure Hilfe vorab.
Jensen.

Content-ID: 273948

Url: https://administrator.de/contentid/273948

Ausgedruckt am: 22.11.2024 um 01:11 Uhr

Lochkartenstanzer
Lochkartenstanzer 06.06.2015 aktualisiert um 23:06:57 Uhr
Goto Top
Moin

 grep ".*red last\">.*<span.*" /home/pi/dateien/test/test.txt | sed -e "s:^.*red last\">::g" -e "s:<span.*$::g" >/home/pi/autowallpaper/test/test2.txt

lks
114757
114757 07.06.2015 aktualisiert um 18:06:45 Uhr
Goto Top
Moin,
etwas kürzer geht's auch so:
sed -nre 's/.*red last">([^<]*)<.*/\1/p' /home/pi/dateien/test/test.txt >/home/pi/autowallpaper/test/test2.txt  
Gruß jodel32
Jens4ever
Jens4ever 15.06.2015 um 12:05:07 Uhr
Goto Top
Moin, vielen Dank euch beiden. Habe beides ausprobiert. Obwohl "red last" nur einmal im Code vorkommt, geben beide Vorschläge von euch deutlich mehr code aus. Ich habe jetzt bestimmt 4 Stunden rumprobiert - auch mit anderen - bash-Schnippseln und komme doch nicht weiter.

Daher hier nochmal ausführlicher erklärt, was ich machen möchte: Ich lade per wget diese Seite http://www.finanzen.net/aktien/Deutsche_Telekom-Aktie
Ihr möchte den Code der Seite hier nicht posten. (Potentielles Urheberrechtsproblempotential.)

Idealerweise könntet ihr mir dabei helfen folgende Zeichen aus dem Code zu extrahieren:
<table class="header_height"><tr><th>15,21 <span>EUR</span></th><th class="red">-0,20 <span>EUR</span></th><th class="red last">-1,27 <span>%  

"header_height" ist im Code nur einmal vorhanden.
Wäre es also eine Lösung "header_height" + die nächsten 80 Zeichen zu schreiben in eine neue Datei?
Die Sonderzeichen usw. bekomme ich dann selbst rausgefiltert. Dann hätte ich die Infos, die mich interessieren ("15,21 EUR, -0,20 EUR, -1,27 %")

Danke für eure Unterstützung!
Jensen
114757
Lösung 114757 15.06.2015 aktualisiert um 13:43:07 Uhr
Goto Top
curl -s "http://www.finanzen.net/aktien/Deutsche_Telekom-Aktie" | grep -o '<table class="header_height">.*</table>' | sed -nre 's/.*<th>([^<]*)<.*red">([^<]*)<.*red last">([^<]*).*/Kurs:\1 Veränderung:\2 Prozentual:\3/p'  
Ausgabe dann
Kurs:15,15  Veränderung:-0,26  Prozentual:-1,69 
Btw. gibt aber genügend andere Dienste wo man Börsenkurse viel einfacher z.B. via JSON abfragen kann ...
Jens4ever
Jens4ever 15.06.2015 um 13:43:04 Uhr
Goto Top
Hi! Funktioniert. Super, vielen vielen Dank!

Habe auch noch eine interessante Sache gefunden: http://www.linux-magazin.de/Ausgaben/2014/07/Portia

Danke.
Jens