Sebastian Wiesinger: Splitten eines Files in mehrere

Hallo zusammen.

Ich habe ein bestimmtes Problem:
Ein 200 MB Newsfile, das 1000e von Newsartikeln enthaelt.
Das File ist im Format

Artikel1
###_cut_here_###
Artikel2
###_cut_here_###
Artikel3
usw...

Und nun soll jeweils Artikel1, Artikel2, Artikel3 usw in ein eigenes File(einfach durchnummerierte files) (Ohne den ##_cut.. Trenner)

Wie stelle ich sowas an mit perl?

  1. Das File ist im Format

    Artikel1
    ###_cut_here_###
    Artikel2
    ###_cut_here_###
    Artikel3
    usw...

    Und nun soll jeweils Artikel1, Artikel2, Artikel3 usw in ein eigenes File(einfach durchnummerierte files) (Ohne den ##_cut.. Trenner)

    Wie stelle ich sowas an mit perl?

    So geht das:

    DATEI EINLESEN

    open (FILE, "<basisdatei.txt");
    @raw_array=<FILE>;
    close(FILE);

    $i=0;
    for (@raw_array) {

    Zeilen in einen neuen array packen

    push (@print_to_file,$_);

    Wenn die Zeile _cut_here_ enthält

    if (/_cut_here_/) {

    erstelle eine datei die $i.txt heißt

    open (NEWFILE, ">$i.txt");

    schreib die neue array in die neue datei

    foreach (@print_to_file) {print;}

    #datei zu
    close(NEWFILE);

    neue array entleeren

    @print_to_file="";

    $i erhöhen

    $i++;

    } #ende if

    } #ende for

    1. Wie stelle ich sowas an mit perl?

      So geht das:

      ..

      Ich bekomme nur einen Error:

      verteiler.pl: line 4: syntax error near unexpected token (FILE,' verteiler.pl: line 4: open (FILE, "<newsdb");'

      :(

      1. Ich bekomme nur einen Error:

        verteiler.pl: line 4: syntax error near unexpected token (FILE,' verteiler.pl: line 4: open (FILE, "<newsdb");'

        :(

        Die Zeile ist eigentlich richtig.
        Hast du da irgendwelche ` und ' drin? sollten nämlich nicht sein, du brauchst nur die " um den Dateinamen herum. Die Datei muss im selbem Verzeichnis liegen und muss in einem ASCII format vorliegen, sonst klappt es nicht.

        Wegen den 70 MB weiß ich nicht so genau, alles was über die Speicherkapazität des Rechners hinausgeht könnte Problematisch sein, da du ja die gesamte Datei einliest und quasi im Gedächtnis behältst.

        70 MB voller Text? kann es sein, daß die Datei nicht ASCII ist, sondern ein Word dokument oder Access oder ähnliches?

        1. 70 MB voller Text? kann es sein, daß die Datei nicht ASCII ist, sondern ein Word dokument oder Access oder ähnliches?

          Ich habs entzwischen Hinbekommen ;)

          Und die datei ist ein Newsfile.. da stehen paar 1000 Artikel aus NEwsgroups drin :)

    2. Sorry wegen dem 1. Fehler, den hab ich scho jetz...

      Aaber..

      Das file is in größenordnungen zwischen 10 und 70 MB ca... und da scheint perl irgendwie nich mitzuspielen...

    3. Ach so!!!

      #!/usr/bin/perl

      noch in die allererste Zeile schreiben! (den Pfad natürlich anpassen).
      Aber bei win32, wenn dein Perl auch richtig in den Pfad eingetragen ist, ist es eigentlich egal.