Thread Einzelne zeilen aus einer Text Datei löschen (26 answers)
Opened by PerlAnfaenger at 2010-01-15 08:48

bianca
 2010-01-15 12:50
#130560 #130560
User since
2009-09-13
7016 Artikel
BenutzerIn

user image
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

View full thread Einzelne zeilen aus einer Text Datei löschen