Thread 2 Textdateien mergen: anfänger problem (11 answers)
Opened by Gast at 2007-03-17 12:21

topeg
 2007-03-23 18:36
#75098 #75098
User since
2006-07-10
2611 Artikel
BenutzerIn

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

View full thread 2 Textdateien mergen: anfänger problem