ubuntuusers.de

css entfernen, regexp, sed

Status: Ungelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

narfu

Anmeldungsdatum:
8. August 2007

Beiträge: 26

hallo!,

ich benötige einen sed oneliner mit dem ich jegliche css-tags aus einer datei entfernen kann. es geht mir darum nur den content einer .html datei in eine textdatei zu 'extrahieren'.

das löschen der html-tags war mit "sed -e :a -e 's/<[^>]*>//g;/</N;//ba'" bisher relativ erfolgreich. evtl. müssen weitere (z.B. Javascript) ebenfalls entfernt werden.

ich habe mich auf cpan schonmal nach einem perlmodul umgesehen jedoch konnte ich kein passendes finden, lediglich welche die mir die html-tags löschen.

gruß nf

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

Dafür gibt es keinen Einzeiler mit sed. Genau genommen gibt es gar nichts, was mit sed funktioniert, da sed nämlich auf einzelnen Zeilen arbeitet, HTML Zeilenumbrüche außerhalb von Tagnamen aber ignoriert und CSS somit auch prima über mehrere Zeilen gehen kann.

Fürs Umwandeln einer HTML-Datei in eine lesbare Textdatei gibt es die -dump Option für (e)links und lynx.

narfu

(Themenstarter)

Anmeldungsdatum:
8. August 2007

Beiträge: 26

das problem an lynx ist allerdings dass es für ein script ziemlich unpraktisch ist, da es sich nicht von alleine wieder beendet, oder kann man das abgesehen von kill veranlassen?

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

narfu schrieb:

das problem an lynx ist allerdings dass es für ein script ziemlich unpraktisch ist, da es sich nicht von alleine wieder beendet, oder kann man das abgesehen von kill veranlassen?

elinks -dump http://www.google.de gibt die Textvariante von google.de auf der Konsole aus und beendet sich. Zu lync kann ich nichts sagen, aber elinks nennt sich "lynx compatible", also wird lynx das wohl auch tun. elinks würde ich eh vorziehen, der kommt mit CSS und Frames besser zurecht.

user_unknown

Avatar von user_unknown

Anmeldungsdatum:
10. August 2005

Beiträge: 17622

Wohnort: Berlin

Lunar schrieb:

Dafür gibt es keinen Einzeiler mit sed. Genau genommen gibt es gar nichts, was mit sed funktioniert, da sed nämlich auf einzelnen Zeilen arbeitet, HTML Zeilenumbrüche außerhalb von Tagnamen aber ignoriert und CSS somit auch prima über mehrere Zeilen gehen kann.

Die Befehle 'DNPHhGgx' erlauben m.W. auch einen Status mitzuführen wie 'in CSS-Tag', 'in HTML-Tag' und 'außerhalb' - aber dafür sind die Experten rar gesäht, und ich will nicht so erscheinen, als hätte ich sed wirklich dafür empfohlen, es sei denn die css-Quellen wären so formatiert, daß keine Definition 2 Zeilen überschreitet.

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

user unknown schrieb:

Lunar schrieb:

Dafür gibt es keinen Einzeiler mit sed. Genau genommen gibt es gar nichts, was mit sed funktioniert, da sed nämlich auf einzelnen Zeilen arbeitet, HTML Zeilenumbrüche außerhalb von Tagnamen aber ignoriert und CSS somit auch prima über mehrere Zeilen gehen kann.

Die Befehle 'DNPHhGgx' erlauben m.W. auch einen Status mitzuführen wie 'in CSS-Tag', 'in HTML-Tag' und 'außerhalb' - aber dafür sind die Experten rar gesäht.

Sed ist zwar kein Zustandsautomat und taugt somit nicht zum echten Parser, aber mit der Fähigkeit von sed, bei bestimmten Mustern zu bestimmten Sprungmarken zu verzweigen, kann man Zustände simulieren. Insofern hast du recht, und ich hab Unsinn erzählt. Ein Einzeiler ist das dann aber nicht mehr, und ich frage mich, ob man das wirklich implementieren will. Ich kann sed nicht so gut, und sich da einzuarbeiten ist sinnlos, da man sowas mit einer richtigen Programmiersprache oder einem Tool wie elinks viel schneller hinbekommt.

Antworten |