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-Key: 273948

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

Printed on: April 19, 2024 at 12:04 o'clock

Member: Lochkartenstanzer
Lochkartenstanzer Jun 06, 2015 updated at 21:06:57 (UTC)
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
Mitglied: 114757
114757 Jun 07, 2015 updated at 16:06:45 (UTC)
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
Member: Jens4ever
Jens4ever Jun 15, 2015 at 10:05:07 (UTC)
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
Mitglied: 114757
Solution 114757 Jun 15, 2015 updated at 11:43:07 (UTC)
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 ...
Member: Jens4ever
Jens4ever Jun 15, 2015 at 11:43:04 (UTC)
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