Hola a todos, hoy vamos a compartir cómo se pueden reemplazar cadenas de caracteres cuando trabajamos con el editor vi. En la mayoría de las ocasiones que nos toca trabajar con entornos UNIX, no tenemos instalado el entorno gráfico, y necesitamos editar ficheros de texto. Para ello, una de las herramientas más utilizadas es el editor vi o vim.
Editor vi
Para utilizar el editor, lo único que tenemos que hacer es llamarlo con el nombre del fichero que necesitemos editar. Si al llamarlo, el nombre del fichero no existe, se crea un fichero nuevo con el nombre especificado.
Cuando ejecutamos el comando, se abre la página del editor.

Buscar cadenas de caracteres en vi
Hay dos opciones para realizar busquedas en el editor.
Para buscar desde el cursor en adelante:
/cadena_de_caracteres
Para buscar desde el cursor hacia atrás:
?cadena_de_caracteres
En cualquiera de los dos casos, se busca la primera aparición de «cadena_de_caracteres». Se puede ir buscando la siguiente aparición, hay que ir pulsando la tecla «n».
Reemplazar cadenas de caracteres en vi
Hay varias opciones para realizar sustituciones con el editor vi, dependiendo del ámbito donde queremos realizar la sustitución, el número de sustituciones que queremos hacer, etc.
Para reemplazar solamente en la linea actual, y solo la primera aparición de la cadena buscada, se utliza el siguiente comando:
:s/cadena/nueva_cadena/
Para reemplazar todas las apariciones de la cadena, se añade una «g» al final del comando
:s/cadena/nueva_cadena/g
Si se quiere reemplazar en todo el fichero, todas las apariciones de la cadena:
:%s/cadena/nueva_cadena/g
Si solo se quiere realizar el reemplazo en un conjunto de lineas, y no en todo el fichero:
:1,5s/cadena/nueva_cadena/g
En los dos últimos comandos, si no se especifica la «g» al final, se cambia la primera aparición de la cadena en cada linea.
Ejemplo
Un ejemplo de uso para esta utilidad, puede ser si tenemos un tnsnames.ora para las conexiones a una BBDD Oracle, donde cada entrada tiene, por ejemplo, un sufijo identificativo de una provincia, y queremos cambiar todos los sufijos de una vez.
BBDD_1_Madrid = (DESCRIPTION = ....
BBDD_2_Madrid = (DESCRIPTION = ....
BBDD_3_Madrid = (DESCRIPTION = ....
BBDD_4_Madrid = (DESCRIPTION = ....
BBDD_5_Madrid = (DESCRIPTION = ....
En este ejemplo hay varias conexiones a BBDD de Madrid. Si se quiere sustituir estás conexiones de Madrid, por conexiones a BBDD de Lugo, se ejectutaría el comando:
:%s/Madrid/Lugo/g
Ejecutando el comando, el fichero quedaría así:
BBDD_1_Lugo = (DESCRIPTION = ....
BBDD_2_Lugo = (DESCRIPTION = ....
BBDD_3_Lugo = (DESCRIPTION = ....
BBDD_4_Lugo = (DESCRIPTION = ....
BBDD_5_Lugo = (DESCRIPTION = ....
Se puede consultar la información de esta herramienta en la documentación oficial de cada distribución de UNIX o Linux que se este utilizando, pero para nosotros, que nos enfocamos en BBDD, Oracle ofrece manuales para el uso de comandos, y se puede encontrar información sobre vi en el siguiente enlace:
https://docs.oracle.com/cd/E19620-01/805-7644/6j76klopr/index.html
Esperamos que os haya sido de utilidad.
Un saludo.
Equipo de base de datos
Si no quieres perderte trucos como este y estar al día de este mundo, suscríbete a nuestra newsletter. Te mantendremos informados con un solo email al mes.
¿Aún no conoces Query Performance? Descubre cómo puede ayudarte en tu entorno Oracle. Más información en su página de LinkedIn.
Sígue a GPS en LinkedIn