
93578
13.07.2017, aktualisiert um 14:46:48 Uhr
Bash-Script um aus einer Textdatei alle HTML-Tags zu entfernen. Hilfe!
Hall an alle,
ich habe eine Textdatei (LF, Win-1252), die wie folgt aussieht:
Dort will ich alle HTM-Tags entfernen.
Dazu habe ich folgendes Script gefunden ("web.sh"):
Am Ende will ich folgendes haben:
Stattdessen habe ich aber:
Also in "asdcf<>sd" wird "<>" gelöscht. Und die Zeile <forum> wird auch komplett gelöscht.
Ich will aber solche Zeilen ja behalten! Es wurden doch in der ersten Zeile extra zu löschende HTML-Tags definiert. Warum werden dann andere Wörter in <> oder leere <> gelöscht? Wie kann man das korrigieren?
ich habe eine Textdatei (LF, Win-1252), die wie folgt aussieht:
<html>
<head>
<title>Test</title>
</head>
<body bgcolor=white leftmargin="0" topmargin="0" marginwidth="00" marginheight="0" class=NormalFont>
<tr>
<td align=center><b>Date</b></td>
<td align=center><b>Total Hours</b></td>
</tr>
12345
asdfwf
asfs<fv
asdcf<>sd
<forum>
</table>
</body>
</html>
Dort will ich alle HTM-Tags entfernen.
Dazu habe ich folgendes Script gefunden ("web.sh"):
htmlTags="a|b|big|blockquote|body|br|center|code|del|div|em|font|h[1-9]|head|hr|html|i|img|ins|item|li|ol|option|p|pre|s|small|span|strong|sub|sup|table|td|th|title|tr|tt|u|ul"
cat datei.txt | sed -r "s/<[^>]*>//g;s/^\w.*=\"\w.*\">//;s/^($htmlTags)>//I;s/<\/*($htmlTags)$//I;s/&*/&/gI;s/"/\"/gI;s/'/'/gI;s/'/'/gI;s/</</gI;s/£/£/gI" > datei1.txt
Am Ende will ich folgendes haben:
Test
Date
Total Hours
12345
asdfwf
asfs<fv
asdcf<>sd
<forum>
Stattdessen habe ich aber:
Test
Date
Total Hours
12345
asdfwf
asfs<fv
asdcfsd
Also in "asdcf<>sd" wird "<>" gelöscht. Und die Zeile <forum> wird auch komplett gelöscht.
Ich will aber solche Zeilen ja behalten! Es wurden doch in der ersten Zeile extra zu löschende HTML-Tags definiert. Warum werden dann andere Wörter in <> oder leere <> gelöscht? Wie kann man das korrigieren?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 343321
Url: https://administrator.de/forum/bash-script-um-aus-einer-textdatei-alle-html-tags-zu-entfernen-hilfe-343321.html
Ausgedruckt am: 06.05.2025 um 22:05 Uhr
4 Kommentare
Neuester Kommentar

<forum>
Dir ist hoffentlich schon klar das wenn du eckige Klammern und andere Sonderzeichen nutzen willst das man diese im HTML-Code mit deren HTML-Entities so schreibt<forum>
Gruß

Logisch das das <forum> und das <> entfernt wird wenn du im sed-Regex diesen Abschnitt drin hast
Denn der entfernt ja alle Tags mit beliebigem oder ohne Inhalt.
Btw. sind das bei weitem nicht alle möglichen HTML-Tags. HTML5 erlaubt inzwischen auch eigens benannte Tags das nur zur Info, deswegen ist das Auflisten aller Tags hier eigentlich Müll.
s/<[^>]*>//g
Btw. sind das bei weitem nicht alle möglichen HTML-Tags. HTML5 erlaubt inzwischen auch eigens benannte Tags das nur zur Info, deswegen ist das Auflisten aller Tags hier eigentlich Müll.