perlunity.de - PERL | JAVASCRIPT | PHP | MySQL | APACHE



#!/COMMUNITY

Members: 5374
davon online: 1
weitere User: 23
Click for quality!




11.02.2012 / 08:12

Community-Member werden   |   Paßwort vergessen   |   OnlineMonitor (1) Wer ist online ... OnlineMonitor starten !
     

 

Home


PERLscripts


PHPscripts


JAVAscripts


Hilfreiches


Links2www


Newscenter


Community


Interna




Community  »  Perl: Allgemeines Forum zur Themenübersicht Themensuche Themenansicht in Thread-Modus


BeitragLetzten Zeile einer Datei auslesen
Seitenanfang
Hallo,

wie der Titel schon sagt, möche ich mit Perl die letzten 20 Zeilen einer Datei auslesen. Hat irgendjemand eine idee, wie ich das realisieren könnte.
Es sollte schlussendlich den unix-befehl `tail -20 file` ersetzen bzw. das selbe ergebnis liefern.

Danke!

Datum: 07.12.2005-12:02

Beitragre: Letzten Zeile einer Datei auslesen
Seitenanfang
Hi,

prinzipiell gibt es mehrere Möglichkeiten. Man könnte erst das ganze File in ein Array einlesen und dann nur die letzten 20 ausgeben, aber bei riesigen Files wäre der Speicherbedarf enorm.

Meine Lösung geht deshalb zeilenweise durch die Datei und hält ein Zeilenfenster mit genau 20 Zeilen vor. Wenn es mehr werden würden, wird automatisch die oberste Zeile entfernt. Beim Ende der Datei hat man dann genau die letzten 20 Zeilen. Voila.


#!/usr/bin/perl -w

use strict;

my $no_of_lines = 20;
my @line_window;

open(IN, '40zeilen') or die "Could not open file: $!";

while (<IN>) {
# erste Zeile entfernen, falls bereits 20 Zeilen im Zeilenfenster sind
shift(@line_window) if scalar @line_window >= $no_of_lines;

# aktuelle Zeile hinten anfuegen
push(@line_window, $_);
}
close IN;

print join('', @line_window);


Gruss,
svenXY

Datum: 07.12.2005-12:58

Beitragre: Letzten Zeile einer Datei auslesen
Seitenanfang
Hey super,

deine Lösung funktioniert einwandfrei! recht herzlichen Dank für die schnelle hilfe.

lg Jac

Datum: 07.12.2005-13:40

-






-
-