perl-Lesen-Datei und greifen spezifische Linien
Ich habe eine text Datei und ich packen möchte bestimmte Zeilen, beginnend mit einem Muster und endet mit einem bestimmten Muster.
Beispiel:
Text
Text
Startpattern
print this line
Print this line
print this line
Endpattern
Text
Text
Text
Start-Muster und das Ende-Muster gedruckt werden soll. Mein Erster Versuch war nicht wirklich erfolgreich:
my $LOGFILE = "/var/log/logfile";
my @array;
# open the file (or die trying)
open(LOGFILE) or die("Could not open log file.");
foreach $line () {
if($line =~ m/Sstartpattern/i){
print $line;
foreach $line2 () {
if(!$line =~ m/Endpattern/i){
print $line2;
}
}
}
}
close(LOGFILE);
Dank im Voraus für Eure Hilfe.
Ich weiß, dass tief unten, wenn Sie schrieb: "could not open log file"., Sie soll schreiben, "Konnte nicht geöffnet werden $LOGFILE: $!".
InformationsquelleAutor Stefan | 2011-03-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie wäre es damit:
Wenn Sie möchten, dass die start-und end-Muster auch gedruckt werden, fügen Sie die push-Anweisungen in if-block als gut.
Ich bin ziemlich neu in perl mich und ich habe nicht ganz verstanden die Frage. Wenn man erklären kann, in ein wenig mehr detail auf, was Ihre Anforderung ist, vielleicht kann ich helfen.
InformationsquelleAutor Bee
Können Sie die Skalare bereichsoperator:
scalar
..
sollte funktionieren für eine beliebige Anzahl von Gruppen innerhalb der DateiInformationsquelleAutor Eugene Yarmash
Sowas?
Sind Sie sicher? Scheint zu funktionieren gut für mich: pastebin.com/nyfGr0my
Sorry, mein Fehler. Ich vergaß, um eine Zeile zu löschen. Wie kann ich der Gruppe diese Einträge in mehrere Felder?
Ich arbeite auch auf ähnliche Dinge , aber die Lösung erwähnt, die von eugene-y auch drucken startpattern und end-Muster , die wir nicht wollen , wie können wir negieren Sie, bitte vorschlagen.
InformationsquelleAutor jho