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