viernes, julio 29, 2016

Sustituir texto en múltiples ficheros

Podemos sustituir de una vez el texto en múltiples ficheros de varias formas diferentes. Dependerá sobre todo de los comandos y utilidades disponibles en nuestro sistema operatativo. Además hay que tener en cuenta que un mismo comando tiene diferentes opciones en sistemas o versiones diferentes.

De este sitio (http://forums.devshed.com/unix-help-35/unix-replace-text-files-directory-146179.html) obtenemos algunas de las opciones:

Haciendo un script que utiliza el comando sed.

Mejora del script añadiendo la lectura de la extensión de los ficheros, el texto a sustituir y el texto a poner en su lugar:

Pasándole el comando sed a la salida del comando find


Utilizando perl como comando. En este ejemplo el texto "applicationX" es sustituido por "applicationY".

 
Esta de arriba es la que he podido utilizar en HP-UX V11.31 Me he posicionado en el directorio dónde tenía los ficheros a modificar y he ejecutado: "find . -type....."

Otra forma de utilizar perl. En este ejemplo el texto "design" es sustituido por "dezine".

En este otro sitio (http://www.cyberciti.biz/faq/unix-linux-replace-string-words-in-many-files/) tenemos unas interesantes variantes:

Con la opción -i de sed:


En muchos UNIX, no tenemos la opción -i, pero no hay problema si la sustitución es en un solo fichero:


En esos UNIX podemos hacer el script bash siguiente:


Tenemos también la opción -pie de perl:


Algunos prefieren utilizar sed con grep para la localización de los ficheros y la sustitución de los textos. Es el ejemplo que encontramos en http://vasir.net/blog/ubuntu/replace_string_in_multiple_files



Si estamos hablando de un servidor WINDOWS, y ficheros que se pueden abrir con un editor de texto, podemos utilizar el VI mejorado (VIM). En este sitio (http://usevim.com/2012/04/06/search-and-replace-files/) tenemos ejemplos.

Básicamente se trata de abrir todos los ficheros de texto a la vez (vim *.txt por ejemplo). Luego con el comando argdo podemos ejecutar el comando de sustitución en todos los ficheros.

Saludos,


No hay comentarios: