[Perl] Sustitucion
Adrian Galindo
agalindo@liceaga.facmed.unam.mx
Thu, 29 May 2003 17:04:20 -0500
Jose Antonio Galicia wrote:
> :) =BFDonde estas grabando? Esto es, haces el loop por
>toooooodo el archivo pero nunca lo imprimes. supongo que
>quieres hacer esto:
>
> $ find . -type f -name "*.htm" -exec perl -pi.bak 's|.src =3D "img/|.sr=
c =3D "{img}img|' {} \;
> =20
>
Si, not=E9 que me falt=F3 el -i, adem=E1s de que debe ir con -pe. Con -ne=
me=20
dejaba los archivos en 0 bytes (?).
Ya pude, pero de verdad que sufr=ED para poder escapar los corchetes de l=
a=20
l=EDnea original, por lo que tuve que hacer un cotejo previo.
Lo del .{1,2} lo puse porque la funci=F3n se podr=EDa llamar ImagenOn o=20
ImagenOff y para que se viera m=E1s 'elegante' le puse la memoria $1:
find . -name "*.htm" -exec perl -pe 'if (/ImagenO.{1,2}\[i\].src . /x)=20
{s|(\[.\].src.=3D ")img/|${1}{img}/|;}' -i {} \;
=A1Que chido es PERL! :D
> pero yo prefiro hacerlo con xargs:
>
> $ find . -type f -name "*.htm" | xargs perl -pi.bak 's|.src =3D "img/|.=
src =3D "{img}img|'
>
> aqu=ED la ventaja es que s=F3lo ejecutas una vez perl por lo que es m=E1=
s r=E1pido.
> =20
>
Suena bien, no lo hab=EDa probado. Lo tomar=E9 en cuenta para la siguient=
e.
> Supongo que ya tienes un respaldo, =BFverdad?
> =20
>
uts... tecle=E9 "tar xzvf original.tar.gz" como 50 veces :)
Ah=ED les cuento si me atoro. Todav=EDa tengo hacer otras 3 parecidas :|
Saludos.
Adri=E1n.