hallo ich habe folgendes Problem: Ich habe hier jede Menge html Dateien(1,3 GB) und in denen Steht folgender Tag (Beispiel): <a href="foo.gif"> Diser Tag soll geändert werden in: <a href="images/foo.gif"> Dies soll nur bei gif-Dateien erfolgen. Html-Dateien sollen ihren alten Tag beibehalten.(a href="test.htm") Weiß jemand von euch eine schnelle Lösung, wie man das per Skript machen kann? Gruß Jens -- Sent through GMX FreeMail - http://www.gmx.net
Moin Jens, habe ein ähnliches Problem, aber nicht genau was Du suchst. Jedenfalls kann es Dir einige Anstösse geben, es ist bestimmt recht schlampig programmiert. Wäre schön wenn Ihr mir Fehler $ Vorschläge per PM mail senden würdet.(OT!) Vielleicht hilft es ein wenig. JaPH rookie Ciao Andre ------------------------------------------------------ #!/usr/bin/perl -w # # Andre Heine # Verzeichnisse lesen & Verarbeiten;) # v0.5.0 alpha opendir (DIR,$dir) or die $!; while (@files=readdir(DIR)) { foreach $filename (@files) { next if $filename=~ /^\.\.?$/; if ($filename=~ /\.txt/) { open (TXT,"/$dir/$filename") or die $!; while (<TXT>) { $tabletxt.=$_; } close TXT; if ($tabletxt ne "") { @txt= split(/#/,$tabletxt); } } } } closedir(DIR); opendir (DIR,$dir) or die $!; while (@pics=readdir(DIR)) { foreach $gfx (@pics) { next if $gfx=~ /^\.\.?$/; if ($gfx=~ /\.JPG/) { for ($i = 0; $i <= 4; $i++) { $html.= Tr(td($pics[$i]),td($txt[$i])); } } } } closedir(DIR); --------------------------------------------
Hi ! Jens Block wrote:
Ich habe hier jede Menge html Dateien(1,3 GB) und in denen Steht folgender Tag (Beispiel):
<a href="foo.gif"> Diser Tag soll geändert werden in: <a href="images/foo.gif">
Dies soll nur bei gif-Dateien erfolgen. Html-Dateien sollen ihren alten Tag beibehalten.(a href="test.htm")
Weiß jemand von euch eine schnelle Lösung, wie man das per Skript machen kann?
Ich vermute mal, dazu brauchst Du nicht mal ein Script. Auf der ix-Homepage liegt ein nützlicher Artikel über Perl-Einzeiler: http://www.heise.de/ix/artikel/1998/07/133/ Als Beispiel: perl -p -i.bak -e 's/\bprintf\b/myprintf/g' *.c Dies ersetzt in jeder *.c - Datei "printf" durch "myprintf", und legt ein Backup der veränderten Datei an. Auf Deine Situation angewendet (ungetestet): perl -p -i.bak -e 's///g' *.html Dies würde aber denke ich nur einen speziellen Tag durch den anderen ersetzen, und nicht überall das Unterverzeichnis einfügen. Da kann man mit der Regex-Maschinerie aber bestimmt noch gut rumbasteln. Es existiert auch ein Modul zum HTML-Parsen, soll viel besser geeignet sein, als seine Regex-Zellen zu quälen. Einen netten Anreiz dazu liefert aber der wie ich finde brillante Artikel von Susanne Schmidt in gleichnamiger Zeitschrift: http://www.heise.de/ix/artikel/1998/11/178/ Da steht auch einiges zum Matching von HTML-Tags. Viel Erfolg ! Cheers, Norman
participants (3)
-
Andre Heine
-
Jens Block
-
Norman Reppingen