Leser: 28
perl -nwle 'chomp; print "$_\n" if length($_) > 10 && length($_) < 15' datei1.txt > datei2.txt
perl -wne 'print if m/\A.{11,14}$/' datei.txt
grep -E '^.{11,14}$' datei.txt
2009-12-03T10:47:37 Xylolwas ist denn perl bitte für eine programmiersprache??? oder hat meine Quest das herz dieser sprache getroffen und deswegen ließ es sich in einer zeile machen, ich bin beeindruckt wenn auch verängstigt :-)
vielen dank.
Quote"..dass bei Perl einfache Dinge auch einfach bleiben sollen und kompliziertes immer noch möglich sein sollte. Diese Forderung, die wir an diese Sprache stellen, ist klar und eindeutig. Allerdings scheitern genau an diesen Punkten sehr viele andere Programmiersprachen, Perl nicht."
2009-12-03T13:42:40 sid burnDas Perl also alleine steht mit der aussage möchte ich nichtmal ansatzweise unterschreiben auch wenn Perl meine Lieblingssprache ist.
2009-12-03T10:12:22 LinuxerCode (perl): (dl )perl -nwle 'chomp; print "$_\n" if length($_) > 10 && length($_) < 15' datei1.txt > datei2.txt
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 39 40 41
#!/usr/bin/env perl # Core Modules use strict; use warnings; use utf8; use open ':encoding(UTF-8)'; use open ':std'; use Getopt::Long; my $input; my $output = \*STDOUT; # Accepts -i and -o GetOptions( 'input=s' => \$input, 'output=s' => \$output, ) or die "Argument Parsing Error\n"; # Open input file open my $fh_in, '<', $input or die "Cannot open input file: $!\n"; # $fh is file or STDOUT my $fh_out; if ( ref($output) eq 'GLOB' ) { $fh_out = $output; } else { open $fh_out, '>', $output or die "Cannot open output file: $!\n"; } # read file while ( my $line = <$fh_in> ) { chomp($line); if ( length($line) > 10 && length($line) < 15 ) { print {$fh_out} $line, "\n" or die "Cannot write to output: $!\n"; } } close $fh_in or die "Cannot close input file: $!\n"; close $fh_out or die "Cannot close output file: $!\n";
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#!/usr/bin/perl use strict; use warnings; my $filein=shift(@ARGV) or die "No imput file specified\n"; my $fileout=shift(@ARGV) or 'STDOUT'; open(my $fhin, '<', $filein) or die "cannot open $filein $!\n"; my $fhout=\*STDOUT; open($fhout,'>',$fileout) if($fileout ne 'STDOUT'); while(my $line=<$fhin>) { chomp($line); my $l=length($line); print $fhout "$line\n" if($l<15 and $l>10); } close($fhout); close($fhin);
Guest werNetter Dreh: Wenn keine Ausgabedatei angeben ist wird auf "STDOUT" geschrieben.
script.pl inputfile STDOUT 10
script.pl inputfile '' 10
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);
cat filein.txt | script.pl - - 10 15 > fileout.txt
QuoteWenn man sich an anderen Programmen orientiert ist "-" oder "--" der Platzhalter für STDOUT oder für STDIN.
1 2 3 4 5 6 7 8 9 10 11 12 13
[... use use use use use use ...] my %opt = (min => 10, max => 15,); GetOptions(\%opt, qw(input=s output=s min:i max:i)) or pod2usage(2); { my $in = IO::File->new('-' eq $opt{input} ? '<-' : ($opt{input}, 'r')) or die "could not open $opt{input} for reading: $!\n"; my $out = IO::File->new('-' eq $opt{output} ? '>-' : ($opt{output}, 'w')) or die "could not open $opt{output} for writing: $!\n"; [while ...] } # Handles hier automatisch geschlossen, da Ende des Gültigkeitsbereichs.
Guest anonQuoteWenn man sich an anderen Programmen orientiert ist "-" oder "--" der Platzhalter für STDOUT oder für STDIN.
Das ist falsch. - steht für STDIN/STDOUT. -- steht für Ende der Optionen.
Das Fachwort für Entwickler, die sich an anderen Programmen aus der freien Wildbahn orientieren, lautet Schwachkopf.
Guest werIn 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.