PDA

Bekijk Volledige Versie : PERL script: block text vervangen?



XPL
02/05/09, 01:48
Hallo,

ik probeer een perl script te schrijven die werkt met bijv de volgende voorbeeld text:

BLABLABLA
BLABLABLA
BLABLABLA
--BEGIN--
YADAYADA
YADAYADA
--END--
BLABLABLA
BLABLABLA

Wat ik wil is dat de file geopend wordt en ingelezen wordt, en alle text tussen --BEGIN-- en --END-- verwijderd wordt. De rest moet opnieuw terug geschreven worden in het bestand.

Nu heb ik al vanalles geprobeerd met whiles en zo.. zelf met regels tellen van deze regels en alles er buiten proberen te printen, maar krijg het niet netjes geprogrammeerd.

Iemand enig idee?

Thanks!

Pur
02/05/09, 02:27
Je kan toch gewoon de line matchen?


$remove=0;
open(IN,"inputfile.txt");
@LINES = <IN>;
close(IN);
open(OUT,"new.inputfile.txt");

foreach $line (@LINES)
{
$remove = 1 if ($line =~ /--BEGIN--/);
$remove = 0 if ($line =~ /--END--/);
print OUT $line if ($remove == 0);
}

close(OUT);

zoiets... kan zijn dat er wat foutjes inzitten gezien op dit tijdstip van de dag ik niet al te helder meer ben :-) Maar gaat om het globale idee

systemdeveloper
02/05/09, 09:05
perl -0777 -pi.bak -e 's/--BEGIN--.*--END--/--BEGIN--\n--END--/ixgs' bestand.txt