Thread Mit while durch file loopen und aktuelle line veraendern (27 answers)
Opened by Student87 at 2012-11-13 10:40

Linuxer
 2012-11-13 11:33
#163276 #163276
User since
2006-01-27
3875 Artikel
HausmeisterIn

user image
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!

View full thread Mit while durch file loopen und aktuelle line veraendern