Bestand splitsen in logische delen

Ik heb nu al een paar dagen zitten googlen, maar kom er maar niet uit...

Het volgende wil ik bereiken:

Ik heb een bestand dat is opgebouwd uit blokken tekst van verschillende grootte (d.w.z. geen vast aantal lines) met tussen ieder blok één of meerdere whitelines. Nu wil ik de blokken tekst afzonderen in verschillende files.

Dus tekstblok 1 moet in file1 gezet worden (liefst zonder whitelines) en
tekstblok2 moet in file2 gezet worden, enz

Heeft iemand hier een oplossing cq. commando voor zodat ik er een shell script omheen kan maken?

Misschien zoiets:

[quote:c4fe3b7d5d]
#!/usr/bin/perl -w

use strict;

my $file="/aap/noot/mies.txt";

open FILE, $file;
while (<FILE>) {
chomp;
my @paragraphs = split /{2, }s/;
}
close FILE;
[/quote:c4fe3b7d5d]

OK, het is hier geen Perl forum, maar ik kan het toch niet laten een nog wat uitgebreider scriptje te posten. Volgens mij moet dit script werken (doet het bij mij in ieder althans...):

[code:1:d5f8a9b909]
#!/usr/bin/perl -w

use strict;

my $sInputFile = shift;
my $sOutputDir = shift;

die " USAGE: split_in_blocks.pl <input_file> <output_dir>nn" .
" schrijft iedere paragraaf in de inputfile in een aparte file in den" .
" output_dirnn" .
" Voorbeeldaanroep:nn" .
" > split_to_blocks.pl myFile.txt ./myOutputDir/n"
unless( defined($sOutputDir));

slurp mode

laat je een hele file in een keer inlezen

local $/ = undef;

open de input file

open(FH_INPUT, “< $sInputFile”)
or die “Couldn’t open $sInputFile for reading: $!n”;

my $sText = <FH_INPUT>;
close(FH_INPUT);

nu zit de hele text van die file in $sText

verdeel de tekst in blokken geschieden door een of meer lege regels

my @aParagraphs = split(/n{2,}/, $sText);

my $iFileNumber = 1;
for (@aParagraphs) {
# open output file handler
open( FH_OUT, “> $sOutputDir/paragraph_$iFileNumber.txt”)
or die “Couldn’t open $sOutputDir/paragraph_$iFileNumber.txt” .
“for writing: $!n”;
# print de paragraaf in de file
print FH_OUT $_;
# close de file handler
close(FH_OUT);

# file nummer eentje omhoog
$iFileNumber++;

}
[/code:1:d5f8a9b909]

En je kan 'm dus bijvoorbeeld zo aanroepen:

[code:1:d5f8a9b909]> split_to_blocks.pl myFile.txt ./myOutputDir/[/code:1:d5f8a9b909]

en dan komen er allerlei files te staan in ./myOutputDir, waarin de afzonderlijke paragrafen staan.

[quote:46f6facee9="MacTommy"]OK, het is hier geen Perl forum, maar ik kan het toch niet laten een nog wat uitgebreider scriptje te posten. Volgens mij moet dit script werken (doet het bij mij in ieder althans...):

[/quote:46f6facee9]

Halleluja!!!

Hoewel uitgebreid werkt deze ook bij mij uitstekend.
Mijn dank is groot en het nut van een forum als dat van macosx.nl is weer eens bewezen.

Kijk, dat is nog eens mooi om te horen!