[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