Thread Dateiveränderung durch Perl-Skript
(12 answers)
Opened by clyde at 2009-05-14 17:15
Gut, jetzt wissen wir also, wie die Zeile aussehen soll, in der ersetzt werden soll.
Wonach soll nun gesucht werden? Sollen alle IPs in den Zeilen, die dem beschriebenen Format entsprechen, ersetzt werden? Soll nach einer bestimmten IP gesucht werden nun nur diese ersetzt werden? Je genauer Du Dich ausdrückst, desto einfacher machst Du es den Leuten, die Dir helfen sollen. Ich rate mal ins Blaue und schlage folgendes (ungetestet) vor: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #! /usr/bin/perl -i.bak use strict; use warnings; # diese Skript legt von angegebenen Datei(en) jeweils eine Kopie an # (mit Erweiterung .bak; siehe perldoc perlrun; -i.bak) # definiere die Strings, nach denen wir suchen # und womit wir ersetzen wollen # um die IP vom Schema der entsprechenden Zeile zu trennen, nutzen # wir hier sprintf(); (siehe: perldoc -f sprintf; ) ;ansonsten: # my $gesucht = 'IP="144.144.144.144"'; # my $ersetze = 'IP="222.222.222.222"'; my $gesucht = sprintf( 'IP="%s"', '144.144.144.144' ); # aendere IP, nach der gesucht wird my $ersetze = sprintf( 'IP="%s"', '222.222.222.222' ); # aendere IP, mit der ersetzt wird # Lese zeilenweise aus Datei(en) while ( <> ) { # suche/ersetze fuer jede Zeile s{^\Q$gesucht\E}{$ersetze}; # gebe die Zeile wieder aus print; } __END__ Das Skript in eine Datei packen. Skriptaufruf: skript.pl textdatei1 textdatei2 Ergebnis: textdatei1 und textdatei2 enthalten nach dem Aufruf des Skriptes die geänderten Daten. textdatei1.bak und textdatei2.bak enthalten jeweils die gesicherte Originalversion. edit: minor changes edit2: Skriptaufruf um Ergebnis erweitert. Last edited: 2009-05-18 10:43:42 +0200 (CEST) meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |