1 2 3 4 5 6 7 8 9 10 11
my $seen = 0; while ( my $line <$fh> ) { if ( $seen == 0 && $line =~ m{stichwort) ) { $seen=1; } if ( $seen == 1 ) { # aktuelle Zeile und den ganzen Rest ausgeben print $line, <$fh>; } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
#!/usr/bin/perl use warnings; use strict; my $fname = "test"; my $keyword = "flupp"; my $fh; open($fh, "<", $fname); my $seen = 0; my $line = <$fh>; while ($line) { chomp($line); if ($line eq $keyword) { $seen = 1; } if ($seen == 1) { print "$line\n"; } $line = <$fh>; } close($fh);
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
#! /usr/bin/env perl use strict; use warnings; # Das Suchstichwort muss als erstes Argument uebergeben werden my $pattern = shift; die "Kein Suchbegriff angegeben!\n" if !$pattern; # und dann der Dateiname, worin gesucht werden soll my $infile = shift; die "Keine Datei zum Lesen angegeben!\n" if !$infile; die "Datei '$infile' existiert nicht!\n" if !-e $infile; die "Datei '$infile' kann nicht gelesen werden!\n" if !-r $infile; open my $fh, '<', $infile or die "open($infile,ro) failed: $!\n"; # zeilenweise aus Dateihandle lesen while ( my $line = <$fh> ) { # wenn die aktuelle Zeile exakt den Suchbegriff enthaelt if ( index( $line, $pattern ) >= 0 ) { # dann gib die Zeile und den Rest der Datei aus. print $line, <$fh>; # bei sehr großen Dateien kann es evtl. sinnvoll sein, die obere print-Zeile durch folgende zu ersetzen #print $line; # aktuell gelesen Zeile ausgeben #print while <$fh>; # zeilenweise alle weiteren Zeilen ausgeben } } close $fh;
1
2
3
4
5
6
7
8
9
10
$ perl /tmp/t.pl zeilenweise /tmp/t.pl
# zeilenweise aus Dateihandle lesen
while ( my $line = <$fh> ) {
if ( index( $line, $pattern ) >= 0 ) {
print $line, <$fh>;
}
}
close $fh;
$
perl /tmp/skript.pl Suchmuster /tmp/alte.date > /tmp/neue.datei
perl -ne'/flupp/ && print $_,<>' < inputfile > outputfile
perl -ne'print if (/flupp/..0)' < inputfile > outputfile
perl -ne'print if /flupp/..0' < inputfile > outputfile