next up previous contents index PLPL moodlepserratamodulosperlmonksperldocapuntes LHPgoogleetsiiullpcgull
Sig: tr y split Sup: Casos de Estudio Ant: Expandiendo y comprimiendo tabs Err: Si hallas una errata ...

Modificación de Múltiples Ficheros: one liner

Aunque no es la forma de uso habitual, Perl puede ser utilizado en ``modo sed'' para modificar el texto en múltiples ficheros:

perl -e 's/nereida\.deioc\.ull\.es/miranda.deioc.ull.es/gi' -p -i.bak *.html

Este programa sustituye la palabra original (g)lobalmente e i)gnorando el ``case'') en todos los ficheros *.html y para cada uno de ellos crea una copia de seguridad *.html.bak.

Otro ejemplo: la sustitución que sigue ocurre en todos los ficheros info.txt en todos los subdirectorios de los subdirectorios que comiencen por alu:

perl -e 's/\|hyperpage//gi' -p -i.bak  alu*/*/info.txt

Las opciones de línea de comandos significan lo siguiente:

-e
puede usarse para definir el script en la línea de comandos. Multiples -e te permiten escribir un multi-script. Cuando se usa -e, perl no busca por un fichero de script entre la lista de argumentos.

-p
La opción -p hace que perl incluya un bucle alrededor de tu ``script'' al estilo sed:
while (<>) {
        ...             # your script goes here
} continue {
        print;
}
-n
Nótese que las líneas se imprimen automáticamente. Para suprimir la impresión usa la opción -n

-i[ext]
La opción -i Expresa que los ficheros procesados serán modificados. Se renombra el fichero de entrada file.in a file.in.ext, abriendo el de salida con el mismo nombre del fichero de entrada file.in. Se selecciona dicho fichero como de salida por defecto para las sentencias print. Si se proporciona una extensión se hace una copia de seguridad. Si no, no se hace copia de seguridad.

En general las opciones pueden ponerse en la primera línea del ``script'', donde se indica el intérprete. Asi pues, decir

perl -p -i.bak -e "s/foo/bar/;"

es equivalente a usar el ``script'':

#!/usr/bin/perl -pi.bak
s/foo/bar/;


next up previous contents index PLPL moodlepserratamodulosperlmonksperldocapuntes LHPgoogleetsiiullpcgull
Sig: tr y split Sup: Casos de Estudio Ant: Expandiendo y comprimiendo tabs Err: Si hallas una errata ...
Casiano Rodríguez León
2012-05-22