Entfernen/ersetzen, html tags in der bash
Ich habe eine Datei mit Zeilen, die enthalten:
<li><b> Some Text:</b> More Text </li>
Möchte ich zum entfernen der html-tags und ersetzen Sie die </b>
- tag mit einem Bindestrich, damit es so wird:
Text:- Mehr Text
Ich versuche, die sed benutzen, aber ich kann nicht finden, die richtige regex-Kombination.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie ausdrücklich möchten, Streifen Sie alle HTML-tags, aber zur gleichen Zeit nur ersetzen Sie die
</b>
tag mit einem-
können Sie die Kette zwei einfachesed
Kommandos mit einer pipe:Dieser wird alle übergeben den Inhalt der Datei auf der ersten
sed
Befehl, der für das austauschen der</b>
zu einem-
. Dann die Ausgabe von diesem geleitet werden, um einesed
wird, ersetzen Sie alle HTML-tags mit leeren Zeichenfolgen. Die endgültige Ausgabe wird gerettet werden in die neue Dateistripped_file
.Mit einer ähnlichen Methode wie die andere Antwort von @Steve, kannst du auch
sed
's-e
option chain Ausdrücke in einem einzigen (nicht-Pipe-Befehl); durch hinzufügen-i
können Sie auch Lesen-in, und ersetzen Sie den Inhalt von der original-Datei, ohne die Notwendigkeit fürcat
oder eine neue Datei:Wird dies tun, der Ersatz ebenso die verkettete-Befehl oben, aber diesmal wird es direkt ersetzen Sie den Inhalt in der input-Datei. Speichern in eine neue Datei stattdessen, entfernen Sie den
-i
und fügen Sie> stripped_file
zu Ende (oder was auch immer-Datei-Namen, den Sie wählen).variable="x"
Typ text. Verwendets/' variable="'[^\"]*\"//
entsprechend der tag-name und alles, was zwischen den nächsten zwei doppelte Anführungszeichen. (ignorieren Sie den funky mix von Einzel-und geschützte doppelte Anführungszeichen)cat | sed | sed
und dann zu erwähnen, im Vorbeigehen, dass in der Tat alles, was Sie brauchen, istsed
scheint fehlgeleitet. "Man könnte auch" einfach nicht empfehlen, den fehlerhaften Ansatz.Einer Weise mit
GNU sed
:Beispiel:
Ergebnis: