Thread txt-datei filtern (17 answers)
Opened by Xylol at 2009-12-03 10:59

Gast wer
 2009-12-06 16:26
#129008 #129008
ich schrieb das so mit "STDOUT" damit die Ausgabe auf die Konsole erzwingen kann.

Man könnte also schreiben:
Code: (dl )
script.pl inputfile STDOUT 10

das gibt auch weniger Probleme mit weiteren Parametern.

In deiner Variante müsste man schreiben
Code: (dl )
script.pl inputfile '' 10

wenn man weitere Parameter übergeben will.
Es kann dann damit zu Problemen kommen.

Wenn man sich an anderen Programmen orientiert ist "-" oder "--" der Platzhalter für STDOUT oder für STDIN.

Also völlig passend wäre:
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
#!/usr/bin/perl
use strict;
use warnings;

my $filein=shift(@ARGV) or '-';
my $fileout=shift(@ARGV) or '-';

my $min=@ARGV?shift(@ARGV):10;
my $max=@ARGV?shift(@ARGV):15;

my $fhin=\*STDIN;
if($filein ne '-'){
  open(my $fhin, '<', $filein) or die "OPEN $filein $!\n";
}

my $fhout=\*STDOUT;
if($fileout ne '-'){
  open($fhout,'>',$fileout) or die "OPEN $fileout $!\n";
}

while(my $line=<$fhin>)
{
  chomp($line);
  my $l=length($line);
  print $fhout "$line\n" if($l>$min and $l<$max);
}

close($fhout);
close($fhin);

so kann man auch schreiben:
Code: (dl )
cat filein.txt | script.pl - - 10 15 > fileout.txt

View full thread txt-datei filtern