Insertar texto y expresiones regulares

Horst von Brand vonbrand en inf.utfsm.cl
Jue Jun 8 17:20:07 CLT 2006


luisviveropenna en cdsl.cl wrote:
> Tengo que insertar dos comas en un archivo que tiene la siguiente forma:
> 
> 123213,32322,-180,324343,324432
> 23243,5655,-180,566556,56545
> 34456f7,55475,-240,454,767765
> 
> Las dos comas deben ser insertadas inmediatamente despues de la tercera
> coma, para quedar asi:
> 
> 123213,32322,-180,,,324343,324432
> 23243,5655,-180,,,566556,56545
> 34456f7,55475,-240,,,454,767765
> 
> El numero despues del cual se agregan las comas es variable, como tambien
> el numero de caracteres despues del cual se agregan.
> Lo unico fijo es que se agregan despues de la tercera coma.

OK.

  perl -pi.orig -e 's;^((?:[^,]*,){3});\1,;' los  archi vos  a  pro ces ar

Los originales quedan en *.orig

perl(1), perlrun(1), perlre(1)

> Creo que puede hacerse con sed, o perl, pero tendria que contar las comas,

Exacto ;-)

> o poner cada linea en un string y despues recorrerlo,

Definitivamente!

>                                                       pero seria demasiado
> show para un archivo de app 6.000.000 de filas :S

Huaja! Que es esa cosa?! El vomito en CSV de alguna planilla de calculo
gigantesca?

> Alguna idea? --> le pego poco a las expresiones regulares.

Buena idea. Es mejor tratarlas con carin~o, como con todas las cosas.
-- 
Dr. Horst H. von Brand                   User #22616 counter.li.org
Departamento de Informatica                     Fono: +56 32 654431
Universidad Tecnica Federico Santa Maria              +56 32 654239
Casilla 110-V, Valparaiso, Chile                Fax:  +56 32 797513


Más información sobre la lista de distribución Linux