GELÖST - span tag komplett entfernen
GELÖST - span tag komplett entfernen
Ich versuche einen span tag komplett zu entfernen:
<span class="mhn">(1)</span>
Die (1) kann irgend eine Zahl sein.
sed -e 's/<span class="mhn".+?(?=span class="mhn">)span>//g' Datei > Datei2
war eine Idee. Leider wird nichts entfernt und sed läuft durch ohne mir eine Fehlermeldung auszugeben. Maskierung habe ich bereits versucht. Ebenfalls ein Versuch nur mit span ohne class.
sed -e 's/<span.+?(?=span>)span>//g'
Gleiches Ergebnis ohne Fehlermeldung. Hat jemand eine Idee?
<span class="mhn">(1)</span>
Die (1) kann irgend eine Zahl sein.
sed -e 's/<span class="mhn".+?(?=span class="mhn">)span>//g' Datei > Datei2
war eine Idee. Leider wird nichts entfernt und sed läuft durch ohne mir eine Fehlermeldung auszugeben. Maskierung habe ich bereits versucht. Ebenfalls ein Versuch nur mit span ohne class.
sed -e 's/<span.+?(?=span>)span>//g'
Gleiches Ergebnis ohne Fehlermeldung. Hat jemand eine Idee?
Zuletzt geändert von medias am 22.04.2017 09:42:08, insgesamt 1-mal geändert.
- Gharika
- Beiträge: 209
- Registriert: 28.09.2004 16:51:51
- Lizenz eigener Beiträge: GNU Free Documentation License
Re: span tag komplett entfernen
Hallo,
soll das zwischen den span Tags erhalten oder mit entfernt werden?
Alle HTML Tags entfernen:
Inhalt zwischen span nicht entfernen, sondern nur span:
soll das zwischen den span Tags erhalten oder mit entfernt werden?
Alle HTML Tags entfernen:
Code: Alles auswählen
sed -e 's/<[^>]*>//g' Datei > Datei2
Code: Alles auswählen
sed -e 's/<span[^>]*>//g' Datei | sed 's/<\/span>//g' > Datei2
Beleidigungen sind die Argumente derer, die unrecht haben.
-- Jean Jacques Rousseau
-- Jean Jacques Rousseau
Re: span tag komplett entfernen
sed kann keine PCRE, das ist das Problem.
Entweder du verwendest Basic Regular Expressions oder du verwendest Perl & Co.
Entweder du verwendest Basic Regular Expressions oder du verwendest Perl & Co.
Use ed once in a while!
Re: span tag komplett entfernen
Btw:
Kann man auch kombinieren:Gharika hat geschrieben:Code: Alles auswählen
sed -e 's/<span[^>]*>//g' Datei | sed 's/<\/span>//g' > Datei2
Code: Alles auswählen
sed 's/<span[^>]*>//g; s/<\/span>//g' Datei >Datei2
Use ed once in a while!
Re: span tag komplett entfernen
Meillo hat geschrieben:sed kann keine PCRE, das ist das Problem.
Entweder du verwendest Basic Regular Expressions oder du verwendest Perl & Co.
Danke an alle für die Ideen. Dank der Hilfe eines Mitbewohners (ich wohne in einer WG ) habe ich es mit Perl gelöst. Mit sed sah mir die Lösung doch sehr abenteuerlich aus und kaum nachvollziehbar. Mit Perl klappt es so:
Code: Alles auswählen
perl -0777 -pe 's/<span class\=\"mhn\".*?<\/span>//gs'
-0777 bedeutet lies die ganze Datei.
Re: span tag komplett entfernen
Man hat bei Perl der Vorteil mit dem Fragezeichen den Stern ungreedy zu machen, das geht mit POSIX-Regexps nicht, die sind immer greedy.medias hat geschrieben: Mit sed sah mir die Lösung doch sehr abenteuerlich aus und kaum nachvollziehbar. Mit Perl klappt es so:
Code: Alles auswählen
perl -0777 -pe 's/<span class\=\"mhn\".*?<\/span>//gs'
Btw: Ich vermute, dass man die ersten drei Backslashes weglassen kann. (Allerdings bin ich kein Perl-Programmierer.)
Lustig, dass das immer die gleiche erste Anmerkung von allen Perl-Programmierern ist: Es laeuft schneller als mit Shellmitteln. Dabei ist es fuer deinen Anwendungsfall sicher voellig egal, ob es zwei zehntel Sekunden laenger laeuft oder nicht. Die Zeit-Performance von Regexps liegt meist daran wie sie geschrieben sind (in Kenntnis der Regexp-Engine, die man verwendet). Je nachdem wie man die Regexp in sed schreibt ist sie schneller oder langsam ... in fast allen Faellen aber sind diese Unterschiede von der Laufzeit egal. Jedenfalls setze ich sed und awk taeglich und viel ein aber ich optimiere die Scripte nicht oefter als ein-, zweimal im Jahr.[...] es läuft rasend schnell durch die Datei. sed ist langsamer.
Hae? Ist das wirklich so? Kann ich mir ja gar nicht vorstellen. Perl wird immer die ganze Datei lesen. 0777 hoert sich viel eher nach Zugriffsrechten an. Falls deine Bedeutung wirklich stimmen sollte, dann wuerde es mich doch sehr wundern.-0777 bedeutet lies die ganze Datei.
Use ed once in a while!
- heisenberg
- Beiträge: 4123
- Registriert: 04.06.2015 01:17:27
- Lizenz eigener Beiträge: MIT Lizenz
Re: GELÖST - span tag komplett entfernen
Laut man perlrun ist der Schalter -0###(Das ist die Null) die octale/hexadezimale Darstellung(###=oktal, 0x###=hex) des Eingebefeldtrenners aka $/. D. h. octal 777 müsste ein ungültiges Zeichen sein und der erste Datensatz ist die ganze Datei.
Das ist in dem Fall wichtig, da das Span-Tag über mehrere Zeilen erstrecken kann. Da wegen $/ normalerweise Zeile für Zeile verarbeitet wird, würde das dann nicht funktionieren.
Das ist in dem Fall wichtig, da das Span-Tag über mehrere Zeilen erstrecken kann. Da wegen $/ normalerweise Zeile für Zeile verarbeitet wird, würde das dann nicht funktionieren.
Re: GELÖST - span tag komplett entfernen
Aha. Danke.heisenberg hat geschrieben:Laut man perlrun ist der Schalter -0###(Das ist die Null) die octale/hexadezimale Darstellung(###=oktal, 0x###=hex) des Eingebefeldtrenners aka $/. D. h. octal 777 müsste ein ungültiges Zeichen sein und der erste Datensatz ist die ganze Datei.
Das ist in dem Fall wichtig, da das Span-Tag über mehrere Zeilen erstrecken kann. Da wegen $/ normalerweise Zeile für Zeile verarbeitet wird, würde das dann nicht funktionieren.
Meine Folgefrage wird in der von dir erwaehnten Manpage auch beantwortet:
Any value 0400 or above will cause
Perl to slurp files whole, but by convention the value
0777 is the one normally used for this purpose.
Use ed once in a while!
Re: GELÖST - span tag komplett entfernen
Gäbe es dafür nicht auch ein mir passender erscheinendes html/xml-Tool?
mfg rendegast
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
-----------------------
Viel Eifer, viel Irrtum; weniger Eifer, weniger Irrtum; kein Eifer, kein Irrtum.
(Lin Yutang "Moment in Peking")
Re: GELÖST - span tag komplett entfernen
Natuerlich kannst du auch eine XSL-Transformation machen, das waere wohl der passende Ansatz fuer dieses Problem. In der Praxis zeigt sich jedoch oft, dass sich solch einfache Aufgaben mit herkoemmlichen Mitteln einfacher (und bei grossen XML-Dateien auch sehr viel performanter) durchfuehren lassen. Ich habe den Eindruck, dass die XML-Welt in der Praxis nicht halten kann was sich in der Theorie so schoen anhoert.rendegast hat geschrieben:Gäbe es dafür nicht auch ein mir passender erscheinendes html/xml-Tool?
Use ed once in a while!