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: