Textersetzungen per Script

Folgendes Problem:

In unserem Intranet müssen Dokumenten-Namen verändert werden.
Die Umbennungen der Dateinamen lassen sich auch sehr einfach durch Batch o. Script durchführen.
Alter Dokument-Name: 07-XXXX.htm
Neuer Dokument-Name: XXXX-07.htm
Allerdings führen dann alle Links in den Dokumenten ins „Nichts“.
Ich muss also alle alter Links
… siehe unter Dokument 07-2035
in diese Form bringen:
… siehe unter Dokument 2035-07

Als Script in Etwa so:

Für alle Dateien im aktuellen Verzeichnis
Suche nach „07-“
Merke dir die nächsten 4 Zeichen
Ersetze den kompletten String durch
die gemerkten 4 Zeichen + „-07“

Ich suche nun das richtige Tool zum Suchen und Ersetzen aller Links nach o.g. Schema bei allen HTML-Dokumenten in einem Verzeichnis.
Ist hier Perl die richtige Wahl oder kann ein Unix/Linux-Tool wie awk die Aufgabe lösen?

Gruss, Andreas

VIELLEICHT eine Lösung, aber sicher bin ich nicht.

Ich suche nun das richtige Tool zum Suchen und Ersetzen aller
Links nach o.g. Schema bei allen HTML-Dokumenten in einem
Verzeichnis.
Ist hier Perl die richtige Wahl oder kann ein Unix/Linux-Tool
wie awk die Aufgabe lösen?

Ich weiß wirklich nicht, ob kfilereplace (KDE, http://kfilereplace/sourceforge.net/ ) soetwas beherrscht. Vielleicht mal einen Blick wert.

Gruß,

Sebastian

solltest du macromedia dreameaver haben, dann öffne mal die ganze site damit und wenn du dort nen namen änderst werden entsprechend die links mitgeändert…

solltest du macromedia dreameaver haben, dann öffne mal die
ganze site damit und wenn du dort nen namen änderst werden
entsprechend die links mitgeändert…

Habe leider kein macromedia. Wir verwenden als Haupteditor „Phase5“.

Ich weiß wirklich nicht, ob kfilereplace (KDE,
http://kfilereplace/sourceforge.net/ ) soetwas beherrscht.
Vielleicht mal einen Blick wert.

Danke für den Tipp - sehe ich mir mal genauer an.

Hallo Namensvetter,

Folgendes Problem:

Ich muss also alle alter Links
… siehe unter Dokument07-2035
in diese Form bringen:
… siehe unter Dokument2035-07

Ist hier Perl die richtige Wahl oder kann ein Unix/Linux-Tool
wie awk die Aufgabe lösen?

In Perl laesst sich das als Kommandozeile erledigen:

perl -pi.alt -e "s/(07)-(\d{4})/$2-$1/g" bsp.txt

aus bsp.txt

Ich muss also alle alter Links
 .. siehe unter [Dokument 07-2035](07-2035.htm)...
 in diese Form bringen:
 .. siehe unter [Dokument 2035-07](2035-07.htm)...

wird dann:

Ich muss also alle alter Links
 .. siehe unter [Dokument 2035-07](2035-07.htm)...
 in diese Form bringen:
 .. siehe unter [Dokument 2035-07](2035-07.htm)...

Eine Sicherungskopie der alten Datei mit dem Namen bsp.txt.alt
wird durch die Option „i.alt“ automatisch angelegt, fuer den
Fall der Faelle.

Zu beachten ist, dass der Einzeiler unter Windows
wie oben in „befehl“ eingeschlossen wird, unter Linux/Unix
aber mit ‚befehl‘.

Hoffe geholfen zu haben.

Gruesse,

-Andreas.

Super!! Dis isses :smile:
Ich bin begeistert!

Eine Befehlszeile und das Problem ist gelöst:

perl -pi.alt -e „s/(07)-(\d{4})/$2-$1/g“ bsp.txt

Vielen Dank für die Hilfe. :wink:

Gruß, Andreas