GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Html-Tag herausfiltern und mit Sed durch andere Html-Tags ersetzen?

Ich habe <B> ersetzt und </B> mit <STRONG> und </STRONG> in einer Datei. Es ist so etwas wie das Ersetzen von hmtl-Tags. Ich habe sed 's/<B>/STRONG/g' verwendet . Es hat den Job gemacht, aber wenn in der Datei [B] und [/B] ist anwesend. Dann werden sie auch in [STRONG] geändert und [/STRONG] . Ich verstehe die Logik dahinter nicht.

Akzeptierte Antwort:

Standardmäßig verwendet sed grundlegende reguläre Ausdrücke. Das bedeutet, dass GNU < zulässt Übereinstimmung mit dem Anfang eines Wortes und > dem Ende eines Wortes entsprechen. Beachten Sie:

$ echo '<B> BBB B' | sed 's/<B>/STRONG/g'
<STRONG> BBB STRONG

<B> entspricht dem Wort B die in der obigen Zeichenfolge zweimal vorkommt. Weil es mit dem Wort B übereinstimmt und nicht die spitzen Klammern, die spitzen Klammern bleiben unverändert.

Wenn Sie spitze Klammern abgleichen möchten, <> , lassen Sie den Backslash weg:

$ echo '<B> BBB B' | sed 's/<B>/<STRONG>/g'
<STRONG> BBB B

<B> entspricht einer offenen spitzen Klammer, gefolgt von B gefolgt von einer schließenden spitzen Klammer. Also <B> wird durch <STRONG> ersetzt aber B allein gelassen wird.

Erfassen sowohl des öffnenden als auch des schließenden Tags

$ echo '<B> BBB B </B>' | sed -r 's|<(/)?B>|<1STRONG>|g'
<STRONG> BBB B </STRONG>

-r ist für erweiterte Regex, aber neuere Versionen von GNU sed unterstützen auch -E als Synonym für -r . BSD sed verwendet -E dafür und angeblich haben zukünftige POSIX-Standards -E übernommen . Aus Kompatibilitätsgründen sollte man also verwenden (Huttipp @Kos):

$ echo '<B> BBB B </B>' | sed -E 's|<(/)?B>|<1STRONG>|g'
<STRONG> BBB B </STRONG>

Ubuntu
  1. Verwenden von Sed-, Ex- und Perl-Befehlen zum Suchen und Ersetzen eines Textes in Linux

  2. Mehrere Muster gleichzeitig mit dem Sed-Befehl verwenden

  3. Ersetzen Sie eine Zeile durch einen anderen Inhalt mit Sed und Parallel für eine große Datei?

  4. Sed mit Sonderzeichen verwenden?

  5. Mehrere Dateitexte durch Sed ersetzen?

So vergrößern und verkleinern Sie Videos mit FFmpeg

So verwenden Sie den SED-Befehl zum Suchen und Ersetzen von Zeichenfolgen in Dateien

Verwenden von Flatpak auf Ubuntu und anderen Linux-Distributionen [Vollständige Anleitung]

Verwenden von Yarn unter Ubuntu und anderen Linux-Distributionen

So finden Sie heraus, welches Programm das Internet nutzt und wie viel?

Unix Sed Tutorial:Suchen und Ersetzen von Text in einer Datei mit RegEx