Thread Mit while durch file loopen und aktuelle line veraendern
(27 answers)
Opened by Student87 at 2012-11-13 10:40
Nicht immer ist es gut, alles in einem Abwasch machen zu wollen.
Eine Datei zur Eingabe, eine zur Ausgabe. Am Ende dann die Eingabedatei mit der Ausgabedatei überschreiben. 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; # Eingabedatei wird als Argument übergeben my $infile = shift(@ARGV) || die "no infile specified.\n"; # Ausgabedatei heisst wie Eingabedatei mit Endung ".new" my $outfile = $infile . ".new"; # oeffne Eingabe lesend open my $in, '<', $infile or die "open($infile,ro) failed: $!\n"; # oeffne Ausgabe schreibend open my $out, '>', $outfile or die "open($outfile,w) failed: $!\n"; # lese zeilenweise LINE: while ( my $line = <$in> ) { # trenne Zeile in Spalten auf my @columns = split /\t/, $line; # weiter mit naechster Zeile wenn Bedingung erfüllt next LINE if $columns[1] == 45; # Zeile scheint OK, schreibe sie in Ausgabedatei print $out $line or die "print to $outfile failed: $!\n"; } # schliesse Ausgabedatei close $out or die "close($outfile) failed: $!\n"; # schliesse Eingabedatei close $in; # ersetze Eingabedatei durch die Ausgabedatei rename($outfile,$infile) or die "rename($outfile,$infile) failed: $!\n"; edit: Code kommentiert; @ARGV eingefügt; Label "LINE" eingefügt. Last edited: 2012-11-15 11:30:30 +0100 (CET) meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |