MrDizzle+2009-02-25 15:35:33--Hallo Perl-Programmierer
ich habe ein großes Problem und zwar:
Mein Simulationsprogramm gibt mir eine Datei mit 8 Spalten (separiert durch Tab) und 100000 Zeilen.
Ich möchte nur einen Teil in ein txt.-File schreiben. Und zwar die letzten 100 Zeilen und die 3 bis 6 Spalte, die Werte sollen statt durch tab mit einem Komma getrennt sein. Es handelt sich hier generell nur um Zahlenwerte.
Ich habe es bis jetzt nur geschafft mir die letzten 100 Zeilen raus zu schreiben, aber mit den Spalten auswählen und zusammenfügen habe ich nicht gepackt.
Wenn ihr helfen könntet, wäre es das echt cool. Bin erst seit 2 Tagen an Perl dran, daher ein blutiger Anfänger.
Danke schon mal im Voraus.
Spalte1 Spalte2 Spalte3 Spalte4 Spalte5 Spalte6 Spalte7
Zeile1
Zeile2
..
.
Zeile100000
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
#!/usr/bin/perl
use warnings;
use strict;
# Zeilenanzahl ermitteln
open(my $fhZl, "<Test.txt") or die $!;
my $cnt = 0;
while(my $z = <$fhZl>) {
$cnt = $.;
} # while
close($fhZl) or die $!;
# Die letzten 100...
my $zl = 0;
$zl = $cnt - 100;
# Tab getrennt einlesen, Komma getrennt rausschreiben
# und zwar die letzten 100 Zeilen
open(my $fhEin, "<Test.txt") or die $!;
open(my $fhAus, ">Ausgabe.txt") or die $!;
while(my $zeile = <$fhEin>) {
if ($. > $zl) { # $. enthaelt die aktuelle Zeilennummer
my @array = ();
@array = split(/\t/, $zeile);
print $fhAus join(",", @array[2..5])."\n";
} # if
} # while
close($fhEin) or die $!;
close($fhAus) or die $!;
print "Fertig.\n";
1;
funkt ;)