der Dennis
11-10-2005, 18:20
Hallo alle,
ich versuche gerade meine Seite auf ein neues CMS umzustellen und sitze jetzt hier mit einem MySQL Dump des alten CMS. Ich möchte nun alle Links die ich in meinem alten System (SnipSnap) hatte, auch in meinem neuen (typo) weiterverwenden. Dazu wollte ich das Markup für Links mit Hilfe von sed ändern. Das ganze soll in meinen MySQL Dump tauchen und dort alles was so ausschaut:
{link:so ein link halt|http://linkziel.de/}
In sowas wandeln:
[so ein link halt](http://linkziel.de/ "so ein link halt")
Zum "üben" habe ich etwas Blindtext erzeugt:
blablala {link:guck ein link|http://link.de} blubber.
Das ist eine längere Zeile {link:delve into DEVONthink|http://www.macdevcenter.com/pub/a/mac/2005/08/26/ten Seiten) oh ja.
Zwei in einer Zeile:
da {link:eins|http://link.de} und da{link:auch|http://link.de}.
{link:Google|http://www.google.de/}
Dem bin ich dann mit folgendem Befehl zu Leibe gerückt:
cat text.txt |sed 's@{link:\(.*\)|\(.*\)}@[\1](\2 "\1")@g' | cat
Das funktioniert aber nur mit einem Link pro Zeile und auch nicht mit einem Link der über eine Zeile gebrochen wird:
blablala [guck ein link](http://link.de "guck ein link") blubber.
Das ist eine l?ngere Zeile {link:delve into DEVONthink|http://www.macdevcenter.com/pub/a/mac/2005/08/26/ten Seiten) oh ja.
Zwei in einer Zeile:
da [eins|http://link.de} und da{link:auch](http://link.de "eins|http://link.de} und da{link:auch").
[Google](http://www.google.de/ "Google")
Dann habe ich eine andere regexp gesucht und bin dann damit noch mal los:
cat text.txt |sed 's@{link:\([^ ][^ ]*.\)|\([^ ][^ ]*.\)}@[\1](\2 "\1")@g' | cat
Das passt dann auch auf mehr als einen Link pro Zeile, aber nicht auf den umgebrochenen und auch nicht mehr auf Links die Leerzeichen enthalten...
blablala {link:guck ein link|http://link.de} blubber.
Das ist eine l?ngere Zeile {link:delve into DEVONthink|http://www.macdevcenter.com/pub/a/mac/2005/08/26/ten Seiten) oh ja.
Zwei in einer Zeile:
da [eins](http://link.de "eins") und da[auch](http://link.de "auch").
[Google](http://www.google.de/ "Google")
Und da weiß ich nun nicht mehr weiter...
Kann mir hier vielleicht irgend jemand auf die Sprünge helfen wie ich die regexp schreiben kann, das das auch mit mehreren Links pro Zeile und Leerzeichen und Umbrüchen klappt?
Vielen, vielen Dank schon einmal.
der Dennis
ich versuche gerade meine Seite auf ein neues CMS umzustellen und sitze jetzt hier mit einem MySQL Dump des alten CMS. Ich möchte nun alle Links die ich in meinem alten System (SnipSnap) hatte, auch in meinem neuen (typo) weiterverwenden. Dazu wollte ich das Markup für Links mit Hilfe von sed ändern. Das ganze soll in meinen MySQL Dump tauchen und dort alles was so ausschaut:
{link:so ein link halt|http://linkziel.de/}
In sowas wandeln:
[so ein link halt](http://linkziel.de/ "so ein link halt")
Zum "üben" habe ich etwas Blindtext erzeugt:
blablala {link:guck ein link|http://link.de} blubber.
Das ist eine längere Zeile {link:delve into DEVONthink|http://www.macdevcenter.com/pub/a/mac/2005/08/26/ten Seiten) oh ja.
Zwei in einer Zeile:
da {link:eins|http://link.de} und da{link:auch|http://link.de}.
{link:Google|http://www.google.de/}
Dem bin ich dann mit folgendem Befehl zu Leibe gerückt:
cat text.txt |sed 's@{link:\(.*\)|\(.*\)}@[\1](\2 "\1")@g' | cat
Das funktioniert aber nur mit einem Link pro Zeile und auch nicht mit einem Link der über eine Zeile gebrochen wird:
blablala [guck ein link](http://link.de "guck ein link") blubber.
Das ist eine l?ngere Zeile {link:delve into DEVONthink|http://www.macdevcenter.com/pub/a/mac/2005/08/26/ten Seiten) oh ja.
Zwei in einer Zeile:
da [eins|http://link.de} und da{link:auch](http://link.de "eins|http://link.de} und da{link:auch").
[Google](http://www.google.de/ "Google")
Dann habe ich eine andere regexp gesucht und bin dann damit noch mal los:
cat text.txt |sed 's@{link:\([^ ][^ ]*.\)|\([^ ][^ ]*.\)}@[\1](\2 "\1")@g' | cat
Das passt dann auch auf mehr als einen Link pro Zeile, aber nicht auf den umgebrochenen und auch nicht mehr auf Links die Leerzeichen enthalten...
blablala {link:guck ein link|http://link.de} blubber.
Das ist eine l?ngere Zeile {link:delve into DEVONthink|http://www.macdevcenter.com/pub/a/mac/2005/08/26/ten Seiten) oh ja.
Zwei in einer Zeile:
da [eins](http://link.de "eins") und da[auch](http://link.de "auch").
[Google](http://www.google.de/ "Google")
Und da weiß ich nun nicht mehr weiter...
Kann mir hier vielleicht irgend jemand auf die Sprünge helfen wie ich die regexp schreiben kann, das das auch mit mehreren Links pro Zeile und Leerzeichen und Umbrüchen klappt?
Vielen, vielen Dank schon einmal.
der Dennis