Thread Einzelne zeilen aus einer Text Datei löschen
(26 answers)
Opened by PerlAnfaenger at 2010-01-15 08:48
Habs mal umgebaut.
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 29 30 31 32 33 34 #!/usr/bin/perl use strict; use warnings; #my @array = ('#----------','application = OVO3','user = oraovo3','','application = TST1','user = oratst3','#----------'); my @neu = ('application = OVO4','user = oraovo4','','application = TST2','user = oratst4'); #print "alt: @array\n\n"; my $datei_passwd = "user"; my $datei_parm = "test.txt"; open(my $sesam, '<', $datei_passwd) or die "$!"; # Lesend öffnen local $/ = "\n"; # Eingabeseparator setzen für Array my @array = <$sesam>; close $sesam; $_ =~ s/[\r\n]// for @array; # Alle Zeilentrennzeichen entfernen (ist unten hinderlich) my $start = ''; for my $zaehl (0 .. @array) { if ($array[$zaehl] eq '#----------') { if ($start eq '') { $start = $zaehl + 1; } else { splice @array,$start,$zaehl - 1,@neu; # Neuen Inhalt setzen last; } } } open (my $out, '>', $datei_parm) or die "$!"; # Schreibend öffnen print $out join "\n",@array; # Zeilenweise schreiben close $out; #print "neu: @array"; Edit: Zum Überschreiben der Ursprungsdatei unten auch einfach $datei_passwd statt $datei_parm verwenden und ganz oben die Pfade noch auf Deine Umgebung anpassen. EDIT2: Das ist natürlich jetzt schon einen Schritt weiter als Du. Jetzt brauchen wir noch die Quelle der neuen Daten. Das ist derzeit ganz oben die Zeile @neu = Die müssen wir natürlich noch ersetzen. Ich weiß nur gerade nicht, wo die neuen Daten herkommen, daher kann ich Dir das nicht rein bauen. Last edited: 2010-01-15 13:03:21 +0100 (CET) 10 print "Hallo"
20 goto 10 |