in 1200 Files, je eine bestimmte Zeile editieren
Aquariophile
- projektverwaltung
Hallo!
In einem Verzeichnis liegen 1200 HTML-Dateien.
In der HTML-Datei soll eine zeile (nicht immer in der selben zeile),
aber immer der gleiche inhalt, durch eine kleine aenderung ersetzt werden.
Und zwar:
<link rel="stylesheet" type="text/css" href="/styles/stylesheet.css">
soll werden zu:
<link rel="stylesheet" type="text/css" href="stylesheet.css">
Muss ich die unbedingt alle von Hand editieren,
oder hat jemand eine Kluges Script das das kann?
Danke!
Aquariophile
Hi,
wenn Du sicher bist, dass in dr Zeile wirklich immer das gleiche steht, kein zusätzliches Leerzeichen oder so, dann kannst Du Dir doch selber ein Script schreiben. Das geht sogar mit PHP und das kannst Du ja.
<link rel="stylesheet" type="text/css" href="/styles/stylesheet.css">
soll werden zu:
<link rel="stylesheet" type="text/css" href="stylesheet.css">
<?php #### ersetze.php ####
if($HTTP_POST_VARS["suche"] and $HTTP_POST_VARS["ersetze"])
{
// Dateien im Verzeichnis suchen
while()
{
//Ist es eine Datei?
if()
{
//Datei öffnen/einlesen/schließen
//Zeile suchen
//Zeile austauschen
//Datei zum Schreiben öffnen
//Daten wegschreiben
}
//nächste Datei
}
}
?>
<html>
<head>
<title>Suche - Ersetze</title>
</head>
<body>
<form name="replace" action ="<?= $HTTP_SERVER_VARS["PHP_SELF"] ?>"
method="post" enctype="multipart/form-data"
value="<?=$HTTP_POST_VARS["suche"]?>">
<p class="input"><input type="text" name="suche"
size="60" maxlenght="80"></input></p>
<p class="input"><input type="text" name="ersetze"
size="60" maxlenght="80"
value="<?=$HTTP_POST_VARS["ersetze"]?>"></input></p>
</form>
</body>
</html>
Liebe Grüße aus http://www.braunschweig.de
Tom
Hi,
In der HTML-Datei soll eine zeile (nicht immer in der selben zeile),
aber immer der gleiche inhalt, durch eine kleine aenderung ersetzt werden.
wenn Du den Phase 5 hast Freeware http://www.meybohm.de, dann geht das dort mit Dateiübergreifendem Suchen/Ersetzen völlig problemlos.
Gruß
Frank
Hallo,
hier eine mögliche Lösung mit Perl, falls du es installiert hast:
(Das Script muss sich im gleichen Verzeichnis wie die Dateien befinden)
#!/usr/bin/perl -w
use strict;
my @dateien = ();
opendir(DIR,'.') or die "Kann dieses Verzeichnis nicht oeffnen, weil : $!\n";
while (defined($_ = readdir(DIR))) {
if ($_ =~ /^.+?.html?$/i) {
push @dateien, $_;
}
}
closedir DIR;
foreach(@dateien) {
open(FILE,"+<$_") or die "Kann $_ nicht oeffnen, weil : $!\n";
local $/;
my $in = <FILE>;
$in =~ s/<link rel="stylesheet" type="text/css" href="/styles/stylesheet.css">/<link rel="stylesheet" type="text/css" href="stylesheet.css">/s;
seek FILE, 0, 0;
truncate FILE, 0;
print FILE $in;
close FILE;
}
Hi,
In einem Verzeichnis liegen 1200 HTML-Dateien.
In der HTML-Datei soll eine zeile (nicht immer in der selben zeile),
aber immer der gleiche inhalt, durch eine kleine aenderung ersetzt werden.
JEDER brauchbare Editor bietet dateiübergreifendes Suchen/Ersetzen.
Ein Editor, der das nicht bietet, ist nicht brauchbar...
cu,
Andreas
Hallo Aquariophile,
In der HTML-Datei soll eine zeile (nicht immer
in der selben zeile), aber immer der gleiche
inhalt, durch eine kleine aenderung ersetzt
werden.Und zwar:
<link rel="stylesheet" type="text/css"
href="/styles/stylesheet.css">soll werden zu:
<link rel="stylesheet" type="text/css"
href="stylesheet.css">
Einfach, sehr einfach:
find . -name "*.html" -exec perl -pi -e 's!<link rel="stylesheet" type="text/css" href="/styles/stylesheet.css">!<link rel="stylesheet" type="text/css" href="stylesheet.css">!g' {} ;
Gruesse,
CK