Kilian Mueller: Nachtraegliche Korrektur der Homepage

Hallo Forum
Ich habe mir ueberlegt: wenn man ein umfangreiches Web-Projekt publiziert, und dann will man etwas aendern, das sich auf alle oder zumindest viele der Seiten auswirkt (zB. wenn sich die E-Mail Adresse des Autors aendert), ist das ein sehr grosser Aufwand.
Gibt es ein Programm (moeglichst fuer Linux), das solche Aenderungen automatisch durchfuehrt?

<a href="mailto:alte@adresse.de">Alte Adresse</a>
wird dann in allen Dateien ersetzt durch
<a href="mailto:neue@adresse.de">Neue Adresse</a>

Das Programm soll nun saemtliche Quelltexte nach dem zu aendernden Tag durchsuchen und es durch den neuen ersetzen.
Gibt es das?
Danke im Voraus,
  Kilian

  1. Hallo Kilian!

    also wenn du einfaches, Dateiübergreifendes suchen/ersetzen meinst kann ich dir Ulli Meybohms html-editor empfehlen, der kann das! http://www.meybohm.de

    tschö!

    Boris

  2. Ich empfehle X-Replace! Damit kann man über ganze Rechner- (/Server-) Strukturen solche Ersetzungen vornehmen. Im Moment habe ich die Adresse nicht im Kopf. Such' mal bei shareware.com oder so. Ansonsten melde Dich mal bei mir.

    Reiner

  3. Ich habe mir ueberlegt: wenn man ein umfangreiches Web-Projekt publiziert, und dann will man etwas aendern, das sich auf alle oder zumindest viele der Seiten auswirkt (zB. wenn sich die E-Mail Adresse des Autors aendert), ist das ein sehr grosser Aufwand.

    Das ist eine gute Beschreibung des Problems. Und an dieser Stelle komme ich zu einem anderen Ansatz als meine Vor-Poster.

    Gibt es ein Programm (moeglichst fuer Linux), das solche Aenderungen automatisch durchfuehrt?

    Ich würde versuchen, zu verhindern, daß ein solcher Fall überhaupt auftreten kann. Was nicht passiert, das muß man nicht reparieren.

    <a href="mailto:alte@adresse.de">Alte Adresse</a>
    wird dann in allen Dateien ersetzt durch
    <a href="mailto:neue@adresse.de">Neue Adresse</a>

    Genau so ein Beispiel brauchte ich: Die Mail-Adresse, von der man schon vorher weiß, daß sie sich durchaus mal ändern kann.

    Also trägt man sie eben *nicht* in jede Seite manuell ein, wenn man das irgendwie verhindern kann. Dafür gibt es mehrere Möglichkeiten:

    a) Du generierst die Seite online. Ich habe auf meiner Intranet-Homepage genau diese Informationen (Mail-Adresse des Webmasters, URL des Dokuments, Datum der letzten Änderung) eben nicht statisch im Dokument drin, sondern dynamisch über eine SSI-Include-Datei erzeugen lassen. Das ist *eine* Datei, in der ich etwas ändern muß - die Aufrufe in 1000 Dokumenten ändern sich nie wieder.

    b) Du generierst die Seiten offline (wenn Du z. B.  kein SSI verwenden darfst). Du schreibst also nicht die endgültigen Seiten per Hand, sondern Du fügst in Deine Seiten eigene Zusatzinformationen (praktisch neu erfundene Tags) ein und läßt ein Programm über den gesamten Baum drüberlaufen, der dann entsprechende Ersetzungen durchführt.
    Für UNIX gibt es da ein fertigtes Freeware(GNU)-Werkzeug, das solche Generierungen in beliebig komplexer Art und Weise (z. B. erweiterbar um selbstgeschriebene Perl-Skripte und vieles mehr!) erlaubt. Das Ding heißt WML (Website Meta Language, siehe http://www.engelschall.com/sw/wml/); ich habe es selbst noch nicht benutzt, aber ein Freund von mir schwört darauf und hat eine Firmenhomepage damit gebaut.

    Das Programm soll nun saemtliche Quelltexte nach dem zu aendernden Tag durchsuchen und es durch den neuen ersetzen.

    Klar gibt es das (TextPad könnte es beispielsweise). Aber wie gesagt ...

  4. Gibt es ein Programm (moeglichst fuer Linux), das solche Aenderungen automatisch durchfuehrt?

    Das müßte mit Unix-Bordmitteln gehen: Schreib' Dir doch einfach ein Shellscript in der Art...

    for file in *.html
    do
      grep <regular expression> $file
      if [ $? -eq 0 ]
      then
        mv $file $file.bak
        sed s/<regular expression>/<replacement>/g $file.bak > $file
      fi
    done

    ...oder so ähnlich. (Statt <regular expression> und <replacement> natürlich den Suchen- bzw. Ersetzen-String einsetzen.)

    Wenn Du rekursiv suchen/ersetzen mußt, dann schreib' nur das zwischen "do" und "done" in ein Shellscript (ersetze $file durch $1) und rufe es folgendermaßen auf:

    find . -name '*.html' -exec suchen_ersetzen.sc {} ;

    Nicht getestet und ggf. debuggt; dürfte noch ausbaufähig sein...

    Gruß,
    Stefan