[caracas-pm] Ayuda con Expresiones Regulares

Guillermo Escalante metallinux at gmail.com
Tue Aug 8 08:26:56 PDT 2006


El 8/08/06, Ernesto Hernández-Novich<emhn at movistar.net.ve> escribió:
> Guillermo Escalante wrote:
> > El caso es que la cadena nueva (la que va a reemplazar) depende
> > de la cadena vieja (cadena a ser reemplazada).
>
> Para eso "salvas" las partes que te interesan usando paréntesis y luego los
> "recuperas" en la sustitución usando $1, $2, etc. según el orden de los
> paréntesis.
>

Si, Pero como podrán ver XXX y W.Y.Z cambian en casi todos los path's :(:(

> [...]
> > "Systems/1353NM-XXX/data/eml/usmvW.Y.Z/UsmPrint.ps"
> >
> > donde XXX, es la versión (puede varia la cantidad de caracteres) y
> > varia en el path de casi todos los archivos ejemplo (3.4, 4.5d, 7.9a,
> > 4.5.6a 6.7.0)
> >
> > W.Y.Z tambien pueden variar por algunos números o letras pero no son
> > importantes en este caso
> >
> > y la cadena que reemplaza seria la siguiente.
> >
> > "Systems/1353NM-XXX/script/UsmPrint.ps"
>
> De ahí concluyo que en realidad en este caso lo que quieres es deshacerte de
> "/data/eml/.*/" y sustituirlo por "/script", dejando lo que está antes y lo
> que está después sin cambio, ¿no?

Si pero igual XXX varia en varios path's, pero ese solo era otro caso,
que ya resolvi [1] :), y solo lo coloque como un ejemplo para que
vieran más o menos como era la cosa

>
> > donde XXX es la versión de la cadena que reemplazara (osea la de la
> > cadena anterior)
> >
> > Asi me quedo la expresión regular para el caso anterior
> >

[1] Aqui esta esa solución:

> > /opr/perl/bin/perl -p -i.bak -e
> > 's!Systems/([^/])*/.*/UsmPrint.ps!Systems/$1/script/UsmPrint.ps!'
> > usm*/conf/param.cfg
>
> Si mi razonamiento es correcto basta con
>
> perl -i.bak -pe 's!/data/eml/[^/]*/!/script/!' archivos
>
> > Ahora el cambio que necesito hacer (en donde tengo la duda) seria el
> > siguiente: La cadena original seria igual
> >
> > "Systems/1353NM-XXX/data/eml/usmvW.Y.Z/UsmPrint.ps"
> >
> > donde XXX, es la versión (puede varia la cantidad de caracteres) y
> > varia en casi todos loa archivos ejemplo (3.4, 4.5d, 7.9a, 4.5.6a
> > 6.7.0)
> >
> > W.Y.Z tambien pueden variar por algunos números o letras pero no son
> > importantes en este caso
> >
> > y la cadena que reemplaza ahora seria la siguiente.
> >
> > "Systems/XXX/script/UsmPrint.ps"
>
> Ahora lo único que quieres conservar es 'XXX' pero nuevamente deshacerte de
> "/data/eml/usm.*/" entonces ahora es un poco más compleja
>

> s!Systems/.+-([\d\w\.]+)/data/eml/usm.*/!Systems/$1/script/!

Si esta Solución es muy buena, jeje solo que no comente que hay otros
path's iguales pero para otros archivos, lo cuales no quiero modificar
ejemplo "Systems/1353NM-XXX/data/eml/usmvW.Y.Z/Usmeml.cfg"
por lo cual tendria que quedar asi a juro:

s!Systems/.+-([\d\w\.]+)/data/eml/usm.*/UsmPrint.ps!Systems/$1/script/UsmPrint.ps!

> --
> Ernesto Hernández-Novich - On Linux 2.6.16 i686 - Unix: Live free or die!
> Geek by nature, Linux by choice, Debian of course.
> If you can't aptitude it, it isn't useful or doesn't exist.
> GPG Key Fingerprint = 438C 49A2 A8C7 E7D7 1500 C507 96D6 A3D6 2F4C 85E3
> _______________________________________________
> caracas-pm mailing list
> caracas-pm at pm.org
> http://mail.pm.org/mailman/listinfo/caracas-pm
>

Gracias por todo
-- 
---------------------------------------------------------------
|  Ing. Guillermo Escalante                        |
|  Nick IRC: MetallinuX                              |
|  GNU/Linux User #379221                       |
|  Debian GNU/Linux "Testing/Unstable"     |
|  "Cuando hablamos de Software Libre,     |
|  nos referimos a la libertad, no al precio"  |
---------------------------------------------------------------


More information about the caracas-pm mailing list