Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : (BASH) - grep Textpassagen



syrius
14.09.2019, 09:18
Guten Morgen zusammen,

ich möchte von einer cURL Ausgabe einen Text mit Umbruch von / bis per grep abgreifen.

Beispiel:


<div class="messageText">

inhalt<br />
inhalt<br />
inhalt

<div class="messageSignature">

Was ich brauche ist der Inhalt zwischen "messageText" und "messageSignature".

Hat eventuell jemand eine Idee wie sich das realisieren lässt?

Grüße
Syrius

FLX
14.09.2019, 13:01
Das müsste so in die Richtung gehen, ungetestet. Durch den -E Parameter kannst du Regex nutzen

grep -E "^<div class=\"messageText\">.*<div class=\"messageSignature\">$"

syrius
16.09.2019, 11:14
Nope, das geht so leider nicht.

Nimbus
16.09.2019, 12:40
awk '/<div class="messageText">/{lerntDochAWKdennEsIstToll=1;next}/<div class="messageSignature">/{lerntDochAWKdennEsIstToll=0}lerntDochAWKdennEsIst Toll'

banane
16.09.2019, 16:21
Etwas umständlicher, aber auch eine Möglichkeit wäre etwas in der Art :


cat /mnt/c/test.txt | sed -n '/messageText/,/messageSignatur/p' | sed s'/<div class=".*//'



EDIT:
Da Grep immer nur eine Zeile bearbeitet ist das damit wohl nicht möglich. Einzig pcregrep könnte das mit der Option -M , die besagt das über mehrere Zeilen gearbeitet werden soll. pcregrep muss aber in der Regel erst nachinstalliert werden