Buscar y reemplazar texto en fichero grande en consola

Puede ser que en algún momento necesitemos reemplazar una cadena de texto por otra en un archivo muy grande. Esto suele pasar, por ejemplo, cuando estamos haciendo una migración de una web a otro dominio, con lo que queremos cambiar un dominio por otro:

www.dominio.com por nuevodominio.com

El caso es que tenemos un problema, y es que si lo que tenemos como archivo fuente es un dump de una base de datos, y esa base de datos es muy grande (del orden de 20MB para arriba ya va un poco mal la cosa), si intentamos cargar en modo texto la base de datos en cualquier editor de texto, seguramente se nos quede colgado y no nos permita abrirlo. Y aún si conseguimos abrirlo, hacer un reemplazo puede hacer que el ordenador se funda por completo.

Para solucionar esto podemos hacerlo mediante consola con el comando sed

Explicación:

  • sed = Stream EDitor
  • -i = in-place (guardar el archivo original con extensión back)
  • La cadena del comando:
    • s = comando se sustitución
    • original = una expresión regular que describa la cadena a reemplazar (o la cadena en si)
    • nueva = la cadena de reemplazo
    • g = global (reemplazar todas las ocurrencias y no solo la primera)
  • fichero.txt = el archivo en cuestión

Con lo que, estando en la carpeta donde se encuentra el fichero que necesitamos reemplazar, ejecutaríamos el siguiente comando:

y en menos de dos segundos tendremos todo el fichero cambiado.

+info:

http://askubuntu.com/questions/20414/find-and-replace-text-within-a-file-using-commands
http://www.computerhope.com/unix/used.htm

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *