[linux] Re: perl uitdaging

Wybo Dekker wybo op servalys.nl
Wo mei 16 23:52:30 CEST 2007


Hugo van der Kooij wrote:
> Hoi,
> 
> Ik zit met een kleine perl uitdaging waar ik even geen idee richting een 
> antwoord heb.
> 
> Ik heb een input file met een regel als:
> 
> "00:11:50:A8:41:BE","I\uffffm a wireless G,  baby!",11,182,"Y","5200.4560 N","00442.6593 E"
> 
> Normaal splits ik de velden met:
> 
>  	@fields = split(/,/,$ThisLine);
> 
> Maar dat gaat hier natuurlijk falikant fout.
> 
> Iemand nog een simple idee hiervoor?

misschien ook leuk is te zien hoe het in Ruby kan (x is de string):

puts x.gsub(/".*?"/) { |v| v.tr(",","\x0") }.
       split(/,/).
       map { |v| v.tr("\x0",",") }

de eerste regel zoekt "-delimited strings en vervangt in elk komma's
door NULLs
de tweede regel splitst op komma's
de derde regel vervangt NULLs weer door komma

Uitvoer:
"00:11:50:A8:41:BE"
"I\uffffm a wireless G,  baby!"
11
182
"Y"
"5200.4560 N"
"00442.6593 E"


of als je ook '-delimiters wilt toelaten:

puts x.gsub(/(['"]).*?\1/) { |v| v.tr(",","\x0") }.split(/,/).map {
|v| v.tr("\x0",",") }

-- 
Wybo



More information about the Linux mailing list