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?
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);
[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.