Thread txt-datei filtern
(17 answers)
Opened by Xylol at 2009-12-03 10:59
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 |