[linux] perl - substitúcia
DATARIX, s.r.o.
datarix na datarix.sk
Pátek Listopad 23 12:27:07 CET 2007
OK, to by fungovalo, ale potrebujem spracovať viacero súborov s rôznou
štruktúrou.
Naviac v niektorých súboroch sa počet polí približuje k 400!!!
Takže by ten parsovací string bol obrovský. Iný formát toho dumpu neviem
získať.
Chcelo by to univerzálnejší spôsob... ???
Lubomir Host wrote:
> On Thu, Nov 22, 2007 at 08:30:39PM +0100, DATARIX, s.r.o. wrote:
>
>> zdravím,
>>
>> potrebujem perlom spracovať dump databázy, ktorý je v textovom tvare:
>> jeden záznam je na jednom riadku
>> hodnoty sú oddelené medzerou
>> textové reťazce sú uzavreté do apostrofov
>> príklad:
>> 'text1' 6786 8 'text2' 2 56 75 0 '' 77 '' '' 'textN' ...
>>
>> mám hotový kus programu, ktorý otvorí a načítava riadky do premennej $line
>> riadok potom rozdelím na jednotlivé polia:
>> @splitted_line = split(/ /,$line);
>>
>> Problém je, že dopredu neviem vylúčiť, či nejaký text nebude obsahovať
>> medzeru.
>> Jedna možnosť je prejsť riadok znak po znaku a sparsovať to "ručne".
>> To sa mi ale nepozdáva.
>>
>
> A vies s istotou vylucit, ze textove pole neobsahuje apostrof? Ak ano,
> tak potom to naparsovat takto:
>
> use Data::Dumper;
> while (my $line = <STDIN>) {
> chomp $line;
> my @splitted_line = @{[ $line =~ m/^'([^']*)'\s(\d+)\s(\d+) .... pokracovat podla vzoru .... $/ ]};
> print Dumper(\@splitted_line);
> }
>
>
>> Vie niekto poradiť, ako korektne a elegantne rozdeliť ten riadok na
>> polia napr. pomocou regexp?
>> Prípadne ako cez regexp nahradiť medzery v textoch napr. podtržníkom?
>> Alebo iným spôsobom?
>>
>
> Kazdopadne by som odporucal ziskat dump v rozumnejsom formate. Napr. vo
> forme XML a rozparsovat to cez modul XML::Simple.
>
> rajo
>
>
Další informace o konferenci linux