Sektionen aus einer Textdatei auslesen
Sebwing
- perl
0 Cheatah0 Sebwing0 Christian Kruse0 Cheatah0 Sebwing
Hallo,
ich möchte aus einer Textdatei, die in Sektionen aufgeteilt ist, die
Zeilen zählen lassen.
Jede Sektion fängt mit [name] an, und endet einfach mit dem neuen
Sektionsnamen, oder dem EOF.
Kann mir jemand einen regulären Ausdruck schreiben, der mir die Zeilenanzahl zwischen den einzelnen Sektionen ausließt ?
Danke,
Sebwing
Hi,
ich möchte aus einer Textdatei, die in Sektionen aufgeteilt ist, die
Zeilen zählen lassen.
Jede Sektion fängt mit [name] an, und endet einfach mit dem neuen
Sektionsnamen, oder dem EOF.
dazu gibt es bei http://www.cpan.org/ das Modul Config::IniFiles.
Kann mir jemand einen regulären Ausdruck schreiben,
Was macht Dich glauben, derartiges würde mit einer einfachen RegExp gehen?
der mir die Zeilenanzahl zwischen den einzelnen Sektionen ausließt ?
Wenn Du die Zeilenzahl mit in die Datei schreibst, kannst Du sie vielleicht mit einer RegExp auslesen. Andernfalls musst Du sie anderweitig ermitteln.
Cheatah
Kann ich nicht mit einem RegExp die Zeichenkette zwischen
zwei Sektionen ausschneiden, und dann mit $. die Zeilen zählen lassen ?
Hoi,
Kann ich nicht mit einem RegExp die Zeichenkette zwischen
zwei Sektionen ausschneiden, und dann mit $. die Zeilen zählen
lassen ?
Nein. Wohl aber kannst du mit einem RegEx herausfinden, ob die neue
Sektion angefangen hat, z. B. so:
my $lines = 0;
my $section = '';
my %section_lines = ();
while(<DAT>) {
if(/^\s*[(\w+)]/) {
$section_lines{$section} = $lines if $section;
$section = $1;
$lines = 0;
}
else {
$lines++ if $section;
}
}
Gruesse,
CK
Hi,
Kann ich nicht mit einem RegExp die Zeichenkette zwischen
zwei Sektionen ausschneiden,
zu gefährlich. RegExp haben bestimmte Aufgaben, und dies geht darüber hinaus. Wenn Du eine funktionierende RegExp entwickelst, hast Du morgen auf einmal neue Daten vorliegen und erhälst (aus Deiner Sicht!) unsinnige Ergebnisse.
Benutze hierfür _keine_ RegExp. Das von mir genannte Modul ist ideal.
und dann mit $. die Zeilen zählen lassen ?
perldoc perlvar:
"""
$.
The current input line number for the last file handle from which you read (or performed a seek or tell on). [...]
"""
Eine RegExp ist kein File-Handle.
Cheatah
Danke !
Hab mir das Modul, sowie den Quellcode angeschaut !
Gruß,
Sebwing