Leser: 5
![]() |
|< 1 2 >| | ![]() |
15 Einträge, 2 Seiten |
my @parts = split /\t/, $line;
my $new_line = join ',', @parts;
1
2
3
4
foreach my $line (@lines){
my @parts = split /\t/, $line; # splittet alle tabulatorzeichen
my $new_line = join ',', $parts[2], $parts[3], $parts[4], $parts[5]; # fügt alle teile mit einem komma wieder zusammen
}
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 warnings; use strict; my $infile = "VelocityPlot.dem"; my $outfile = "test.inp"; open(FH, "<$infile"); my @a = <FH>; close(FH); my $alen = @a; my $i; my @b; open(FH, ">$outfile"); for($i = $alen - 101; $i < $alen; $i++) { @b = split("\t", $a[$i]); my $d = ""; for(my $u = 3; $u <= 6; $u++) { $d = $d . $b[$u - 1]; if($u < 6) { $d = $d . ","; } } print(FH "$d\n"); } close(FH);
hlubenow+2009-02-25 19:01:42--open(FH, "<$infile");
my @a = <FH>;
close(FH);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
#!/usr/bin/perl use strict; use warnings; use Tie::File; use Data::Dumper; my $datei = q(file.txt); use Tie::File; tie my @array, 'Tie::File', $datei or die $!; # @array mit Tie::File an $datei binden # jetzt etwas mit @array anstellen my $anzahl_zeilen = @array; my $anzahl_zu_kop_zeilen = q(3); my @spalten; for ( my $i = ($anzahl_zeilen - $anzahl_zu_kop_zeilen); $i < $anzahl_zeilen; $i++){ @spalten = split("\t", $array[$i]); print join(",",$spalten[2] .. $spalten[5]), "\n"; } #print Dumper \@spalten; untie @array; #und wenn's erledigt ist untie
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;
1 2 3 4 5 6 7 8 9 10 11 12 13 14
use strict; use warnings; use constant { COUNT => 10, SELECT => [ 2 .. 5 ] }; use Tie::File; tie my @lines, 'Tie::File', \*STDIN; print join(',', (split /\s+/)[@{(SELECT)}]), "\n" foreach (@lines[@lines - COUNT .. $#lines]);
![]() |
|< 1 2 >| | ![]() |
15 Einträge, 2 Seiten |