[Date Prev][Date Next][Thread Prev][Thread Next]
[Search]
[Date Index]
[Thread Index]
Re: [FWP] joining columns in csv files
There's no way this is going to be fast, but Text::CSV_XS would be perfect
for this problem.
my $.02
joshr
On Wed, 15 Nov 2000, fergal daly wrote:
> Here's a problem that occurred on a list I'm on. Someone has a csv file
> with 8 columns and they want to merge colums 4, 5, 6 and 7. So
>
> 1,2,3,4,5,6,7,8,9 => 1,2,3,4567,8,9
>
> there were various shots involving sed, awk and perl. The perl ones
> tended to use split and join or just the obvious substitution using lots
> of parentheses. Here's what I came up with
>
> The first one only works becuase the fields to be joined are adjacent
> but I like it becuase I've never seen this before
>
> perl -pi -e 's/((?:.*?,){3})(.*?),/$1$2/' filename filename filename
>
> the second one was shorter than anything else offered and is kinda
> perverse
>
> perl -pe '$i=1;s/,/$i++=~m#4|5|6#?"":","/ge'
>
> it is also quite general, you just replace 4|5|6 with whatever you want,
> to eliminate commas in different positions, although you have to anchor
> the inner regex if you have too many columns as double digits could mess
> things up. IE
>
> perl -pe '$i=1;s/,/$i++=~m#^4|5|6$#?"":","/ge'
>
> which is robust, general, short and fun.
>
> Anyone fancy a go?
>
> Fergal
>
> ==== Want to unsubscribe from Fun With Perl? Well, if you insist...
> ==== Send email to <fwp-request@technofile.org> with message _body_
> ==== unsubscribe
>
==== Want to unsubscribe from Fun With Perl? Well, if you insist...
==== Send email to <fwp-request@technofile.org> with message _body_
==== unsubscribe