miércoles, 4 de agosto de 2010

Buscar y reemplazar una cadena de caracteres por otra

Buscar y reemplazar una cadena de caracteres (string) por otra es pan nuestro de cada día!

La cuestión es cuando tenemos algún archivo muy grande, de esos que no podemos abrir ni siquiera con un bloc de notas (unos 2GB?) y deseamos realizar esta operación... Alguien familiarizado con sistemas *nix podría decir... Ah, pero abro el archivo con VI y listo... Quisiera ver si tenemos tanta suerte trabajando en un computador de sólo 1GB de RAM y abriendo un archivo de unos 10GB. Claro siempre podríamos tirar a la papelera ese viejo computador y comprar otro ;D

Pero eso no es necesario, siempre podemos valernos de una de las mejores herramientas que *nix ha parido, SED (Stream EDitor). Este programa toma un flujo de salida y lo procesa, línea por línea, según alguna tarea definida.

Por ejemplo, si deseo reemplazar en un archivo todas las coincidencias de la cadena "NOTEPAD mola" por "mi NOTEPAD no mola tanto", puedo utilizar el siguiente comando:

$ sed 's:NOTEPAD mola:mi NOTEPAD no mola tanto:g' MI_ARCHIVO

Fíjese que utilizo ":" para separar: el comando "s" (busca y reemplaza), de la cadena a buscar (NOTEPAD mola), de la cadena que utilizaremos para reemplazar las coincidencias (mi NOTEPAD no mola tanto) y el comando "g" (global - para todas las coincidencias en la línea). NOTA: Puedo reeemplazar los ":" por "/".


No hay comentarios:

Publicar un comentario