Thread Zeilen aus Datei löschen vor Schlüsselwort
(6 answers)
Opened by Ralf at 2013-02-18 15:02
Naja, Geschmäcker sind verschieden ;-)
Unten mal mein Vorschlag ein wenig weiter ausgebaut und überdacht. Die Variable $seen ist gar nicht notwendig... daher flog sie raus; die Kontrolle, ob der Suchbegriff in der Zeile enthalten ist, übernimmt hier index(). 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 #! /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; Benutzt wird es beispielseweise so: Code: (dl
)
1 $ perl /tmp/t.pl zeilenweise /tmp/t.pl Allgemeiner Aufruf Code: (dl
)
perl /tmp/skript.pl Suchmuster /tmp/alte.date > /tmp/neue.datei Pfade, etc. sind anzupassen... 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! |