Ich habe grep noch nie zum Parsen von HTML-Dateien verwendet und habe folgendes Problem:
grep -Po "(?s)(<h2>.+?<!-- /endcontent -->)" input.html > output.html
-bash: !--: event not found
Ich habe auch versucht …
grep -Po "(?s)(<h2>.+?\<!-- \/endcontent --\>)" input.html > output.html
… umsonst.
Gibt es eine Möglichkeit, HTML-Dateien mit grep/bash zu analysieren, oder sollte ich eine andere Anwendung verwenden?
Danke schön.
Bearbeiten: Es sieht so aus, als gäbe es einen Trick zwischen der Shell und grep. Die Suche nach der genauen Zeichenfolge „test“ funktioniert, während weder „t.st“ noch „t.st“ funktionieren. Weiß jemand, warum?
Bearbeiten: Aus irgendeinem Grund ist es die Option „-P“, die den regulären Ausdruck unterbricht.
Bearbeiten: Ja, die Option „-P“ erfordert eine Verdoppelung des Punktzeichens, das für jedes beliebige Zeichen steht. Merkwürdig.
grep -Po 't..st' input > output
Antwort1
Versuchen Sie es stattdessen mit einfachen Anführungszeichen '
, etwa so:
grep -Po '(?s)(<h2>.+?<!-- /endcontent -->)' input.html > output.html
Grep verhält sich anders, wenn Dinge in doppelte Anführungszeichen gesetzt sind.