Hallo, trotz vielen Probieren finde ich keine Loesung, wie ich in einer HTML-Datei mit dem vim Text umgruppieren kann. Aus Zeilen wie <p>G & S Touristic GmbH & Co. KG<a href="http://www.gstouristic.de" target="_new"></a><br /></p> soll werden <p><a href="http://www.gstouristic.de" target="_new">www.gstouristic.de</a><br />G & S Touristic GmbH & Co. KG</p> Da es sich um knapp 200 Zeilen handelt, die so umgestellt werden muessen, habe ich keine Lust, das mit Copy und Paste zu machen, sondern versuche es wie ueblich mit dem vim zu bewerkstelligen. Dass die Ursprungszeile HTML-maessig etwas komisch aussieht, liegt uebrigens daran, dass ich dort bereits Telefonnummern, Adressen usw. geloescht habe. Das war aber auch nicht so schwierig wie die nun noch notwendige Umstellung. Genau scheiutere ich daran, dass ich z.B. "G & S Touristic GmbH & Co. KG" gar nicht erst eingelesen bekomme. Mein Ansatz mit \(<p>*<a\) (und Variationen) funktioniert jedenfalls nicht, und \(<p>....<a\) mit unterschiedlichen vielen Punkten ist nun doch eine zu ueble Kruecke. Ich habe uebrigens auch nichts gegegen sed einzuwenden, aber mit dem vim klappt das Suchen und Ersetzen inzwischen wesentlich besser :-) Beste Gruesse, Heinz. -- http://www.pahlke-online.de/reisenews/ http://www.Pahlke-KunstWebDesign.de/
Hallo Heinz, hallo Leute, Am Montag, 3. November 2003 14:33 schrieb Heinz W. Pahlke:
trotz vielen Probieren finde ich keine Loesung, wie ich in einer HTML-Datei mit dem vim Text umgruppieren kann.
Aus Zeilen wie
<p>G & S Touristic GmbH & Co. KG<a href="http://www.gstouristic.de" target="_new"></a><br /></p>
Ich hoffe mal, dass der Umbruch nur in der Mail ist und in der Textdatei alles in einer Zeile steht ;-) Gäbe also als RegEx zum Suchen ^<p>\(.*\)<a href="\([^"\).*$ ^^^^^^ ^^^^^^ ^^^ | | '-> Rest der Zeile "wegwerfen" 1. Gruppierung | 2. Gruppierung (bis vor das nächste ")
soll werden
<p><a href="http://www.gstouristic.de" target="_new">www.gstouristic.de</a><br />G & S Touristic GmbH & Co. KG</p>
Dann brauchst Du als Ersetzungsmuster <p><a href="\2" target="_blank">\2</a><br \/>\1<\/p> Apropos: _new solltest Du nicht verwenden. Aus SelfHTML: | Wenn Sie den Verweis in einem neuen Fenster öffnen wollen, weisen Sie | bei target den Wert _blank (mit dem Unterstrich am Anfang!). Das Ganze packst Du dann zusammen: :%s/such-regex/ersetzen-regex/ Für die Funktion der RegExen kann ich jetzt allerdings nicht garantieren, ist alles freihändig und ohne Tests formuliert ;-)
Da es sich um knapp 200 Zeilen handelt, die so umgestellt werden muessen, habe ich keine Lust, das mit Copy und Paste zu machen, sondern versuche es wie ueblich mit dem vim zu bewerkstelligen.
Dafür ist vim (oder sed oder perl oder...) ja da ;-)
Dass die Ursprungszeile HTML-maessig etwas komisch aussieht, liegt uebrigens daran, dass ich dort bereits Telefonnummern, Adressen usw. geloescht habe. Das war aber auch nicht so schwierig wie die nun noch notwendige Umstellung.
Genau scheiutere ich daran, dass ich z.B. "G & S Touristic GmbH & Co. KG" gar nicht erst eingelesen bekomme.
Mein Ansatz mit \(<p>*<a\) (und Variationen) funktioniert jedenfalls nicht,
Damit suchst Du z. B. nach "<p>>>>>>>>>>><a" oder "<p<a". Was Du willst, ist die RegEx "<p>.*<a" (also ein Punkt vor dem Stern - beliebig viele beliebige Zeichen)
und \(<p>....<a\) mit unterschiedlichen vielen Punkten ist nun doch eine zu ueble Kruecke.
Deshalb ja ".*"
Ich habe uebrigens auch nichts gegegen sed einzuwenden, aber mit dem vim klappt das Suchen und Ersetzen inzwischen wesentlich besser :-)
Meine obigen RegExen sollten auch mit sed funktionieren, wenn man die runden Klammern nicht quotet ;-) Manchmal wünsche ich mir wirklich, alle Programme, die RegExes verarbeiten, wären Perl-RegEx-kompatibel ;-) Gruß Christian Boltz --
Wenn allerdings etwas nicht funktioniert, bin ich über jede Fehlermeldung froh, auch wenn sie tausendfach im Log steht ;-) Kann ich nicht beurteilen. Bei mir funktioniert immer alles. Pfeif...flöt... :-) [> Christian Boltz und Ratti in fontlinge-devel]
Hallo Christian, On 03-Nov-2003 Christian Boltz wrote:
Am Montag, 3. November 2003 14:33 schrieb Heinz W. Pahlke:
trotz vielen Probieren finde ich keine Loesung, wie ich in einer HTML-Datei mit dem vim Text umgruppieren kann.
Aus Zeilen wie
<p>G & S Touristic GmbH & Co. KG<a href="http://www.gstouristic.de" target="_new"></a><br /></p>
Ich hoffe mal, dass der Umbruch nur in der Mail ist und in der Textdatei alles in einer Zeile steht ;-)
Steht in einer Zeile. Die urspruneglich aus einer einzigen Zeile bestehende Datei so umzuwandeln, dass jeder Reiseveranstalter in _einer_ eigenen Zeile steht, hatte ich immerhin schon geschafft.
Gäbe also als RegEx zum Suchen ^<p>\(.*\)<a href="\([^"\).*$
Auf die Idee, Punkt und Stern zu kombinieren, bin ich nicht gekommen :-(
soll werden
<p><a href="http://www.gstouristic.de" target="_new">www.gstouristic.de</a><br />G & S Touristic GmbH & Co. KG</p>
Dann brauchst Du als Ersetzungsmuster <p><a href="\2" target="_blank">\2</a><br \/>\1<\/p>
Das bringt zwar noch ein "Pattern not found", aber das bekomme ich noch hin.
Apropos: _new solltest Du nicht verwenden. Aus SelfHTML: | Wenn Sie den Verweis in einem neuen Fenster öffnen wollen, weisen | Sie | bei target den Wert _blank (mit dem Unterstrich am Anfang!).
Bloss wird dann fuer jeden Link ein weiteres neues Fenster geoeffnet. Mit _new beschraenke ich dies auf _ein_ neues Fenster fuer _alle_ externen Links.
Was Du willst, ist die RegEx "<p>.*<a" (also ein Punkt vor dem Stern - beliebig viele beliebige Zeichen)
und \(<p>....<a\) mit unterschiedlichen vielen Punkten ist nun doch eine zu ueble Kruecke.
Deshalb ja ".*"
Wenn man es weiss... Vielen Dank, Heinz. -- http://www.pahlke-online.de/reisenews/ http://www.Pahlke-KunstWebDesign.de/
Hallo, On 04-Nov-2003 Heinz W. Pahlke wrote:
Das bringt zwar noch ein "Pattern not found", aber das bekomme ich noch hin.
Inzwischen ist die Datei fertig bearbeitet. Habe zwar dann doch wieder mit einem Wuerkaround gearbeitet, sprich zur Begrenzung von \2 einfach ein <xxxx> eingebaut, aber ich will ja auch keinen Schoenheitspreis fuer saubere RegEx gewinnen ;-) Fuer jene, die es interessiert, hier noch der Suchen/Ersetzen-Befehl: %s/<p>\(.*\)<a href="http:\/\/\(.*\..*)"><xxxx>/<p><a href="http:\/\/\2" target="_new">\2<\/a><br \/>\1\.<\/p>/g Beste Gruesse, Heinz. -- http://www.pahlke-online.de/reisenews/ http://www.Pahlke-KunstWebDesign.de/
participants (2)
-
Christian Boltz
-
Heinz W. Pahlke