Thread 2 Textdateien mergen: anfänger problem
(11 answers)
Opened by Gast at 2007-03-17 12:21
Das ist Ungestestest und kann Schreibfehler enthalten. Aber so kann man es grundsätzlich machen.
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 35 36 37 38 39 #!/usr/bin/perl; use strict; use warnings; my $infile='/pfad/zur/datei.in.txt'; my $outfile='/pfad/zur/datei.out.txt'; my $data=''; # Alte daten lesen { local $/=undef; open(my $out_fh, '<', $outfile) or die "Konnte $outfile nicht öffnen ($!)\n"; $data=<$out_fh>; close ($out_fh); } # die letzten 5 Datansätze herauslesen # erst die Daten am Datum auteilen, # dann die letzten 5 Einträge herausholen, # wenn die Liste lang genug ist. # Dann die Einträge wieder vereinen. my @liste=split(/(?<=20\d{4})/s,$data); @liste=@liste[-6..-1] if(@liste>5); $data=join('',@liste); # Neue Daten holen # und anhängen. { local $/=undef; open(my $in_fh, '<', $infile) or die "Konnte $infile nicht öffnen ($!)\n"; $data.=<$in_fh>; close ($in_fh); } # Datensatz speichern # und dabei die alten Daten überschreiben. open(my $out_fh, '>', $outfile) or die "Konnte $outfile nicht öffnen ($!)\n"; print $out_fh $data; close ($out_fh); |