sábado, 20 de febrero de 2010

Reemplazar texto de varios archivos en Linux

bash.png


Voy a explicar cómo reemplazar un texto o cadena de caracteres en varios archivos. Por ejemplo, si tenemos diez archivos .txt en un directorio y queremos que donde aparece la palabra "Pepe", ahora ponga "Jose".






El comando


Se puede hacer fácilmente desde la consola de Linux, con un sólo comando. Sería algo así:




sed -i 's/palabra-vieja/palabra-nueva/g' *.txt


En nuestro caso sería:




sed -i 's/Pepe/Jose/g' *.txt


Este último comando sustituirá la palabra "Pepe" por "Jose" en todos los archivos txt del directorio actual.




¿Pero y si queremos hacer varias sustituciones ejecutando sólo un comando?






El script


Pues lo más sencillo es hacernos un script, en el que se hagan varias llamadas al comando sed, visto anteriormente. Podemos crearnos un archivo que se llame script.sh y que contendrá lo siguiente:




sed -i 's/Pepe/Jose/g' *.txt


sed -i 's/Manolo/Manuel/g' *.txt


sed -i 's/Nacho/Ignacio/g' *.txt


sed -i 's/Inma/Inmaculada/g' *.txt




Ahora ejecutando ese script, estaremos haciendo esas cuatro sustituciones en todos los archivos txt del directorio actual. Para ejecutar ese script, solo tendremos que teclear lo siguiente en la consola:




sh script.sh




Felinfo: Java, Linux, Virtualización. Open Source.  ©Template Blogger Green by Dicas Blogger .

TOPO