Reemplazar por consola en Linux


En un post anterior ya hablé sobre la potencia de la consola de Linux para realizar una acción tan común como buscar cadenas, ahora traigo un nuevo comando que puede ser usado junto con el anterior para aumentar la potencia de éste y así realizar una acción de búsqueda y reemplazo en distintos archivos.

En concreto se trata del comando sed (Stream EDitor), que permite la edición de cadenas para filtros y transformación de texto. El comportamiento por defecto es la captura de la entrada de un texto (ya sea por teclado o fichero) y la modificación para su salida por pantalla, pero para el caso que nos interesa (modificación de archivos), la sintaxis básica es:

$ sed -i ‘s/cadenaIni/cadenaFin/’ archivo

Que realiza la modificación de la cadenaIni por cadenaFin en el archivo indicado.

Se puede realizar en todos los archivos de un directorio con el comando:

$ sed -i ‘s/cadenaIni/cadenaFin/’ *

O en todos los que acaben o empiezan de una determinada forma con:

$ sed -i ‘s/cadenaIni/cadenaFin/’ archivo*
(sustituye la cadena en todos los archivos que empiezen por archivo)
$ sed -i ‘s/cadenaIni/cadenaFin/’ *.html
(sustituye la cadena en todos los archivos html)

El comando es muy completo y, a parte de lo dicho, permite ejecutar scripts para la modificación de cadenas, eliminar espacios y muchas acciones más, pero la función que más veces he utilizado es la de reemplazo en ficheros.
Puede ser muy útil junto con grep para buscar y modificar posibles fallos en algún archivo que hayas programado o para incluir modificaciones en varios archivos a la vez (como cuando se modifica la plantilla de archivos html) y para muchas más cosas.

, , , , , , ,

Deja un comentario