6 Stimmen

Text innerhalb eines HTML-Tags in einer lokalen Datei mit grep abrufen

Mögliches Duplikat:
RegEx stimmt mit offenen Tags überein, ausgenommen XHTML-Tags, die in sich geschlossen sind

Auszug aus der Eingabedatei

<TD class="clsTDLabelWeb" width="28%">Municipality:&nbsp;</TD>
<TD style="WIDTH: 394px" class="clsTDLabelSm" colSpan="5">
<span id="DInfo1_Municipality">JUPITER</span></TD>

Mein regulärer Ausdruck

(?<=<span id="DInfo1_Municipality">)([^</span>]*)

Ich habe eine HTML-Datei auf der Festplatte gespeichert. Ich möchte grep verwenden, um die Datei zu durchsuchen und den Inhalt eines bestimmten Bereichs auszugeben obwohl ich nicht weiß, ob dies eine korrekte Verwendung von grep ist. Wenn ich grep auf die Datei mit dem aus einer anderen Datei gelesenen Ausdruck anwende (damit ich keine Sonderzeichen durcheinander bringe), gibt es nichts aus. Ich habe den Ausdruck in RegExr getestet und er stimmt mit "JUPITER" überein, was genau das ist, was ich zurückgeben möchte. Ich danke Ihnen vielmals für Ihre Hilfe!

Gewünschter Output

JUPITER

3voto

Dennis Williamson Punkte 322329

Versuchen Sie dies:

sed -n 's|^<span id="DInfo1_Municipality">\([^<]*\)</span></TD>$|\1|p' file

oder mit GNU grep und Ihre Regex:

grep -Po '(?<=<span id="DInfo1_Municipality">)([^</span>]*)'

1voto

Paul Creasey Punkte 27679

Grep unterstützt diese Art von Regex (lookbehind Assertions) nicht, und es ist ein sehr schlechtes Werkzeug für diese, aber für das gegebene Beispiel ist es machbar, wird unter vielen situtions brechen.

grep -io "<span id=\"DInfo1_Municipality\">.*</span>" file.htlm | grep -io ">[^<]*" | grep -io [^>]*

so etwas Verrücktes, keine gute Idee.

1voto

ghostdog74 Punkte 305138
sed -n '/DInfo1_Municipality/s/<\/span.*//p' file | sed 's/.*>//'

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X