Uso de vi: Buscar y reemplazar
El vi es una herramienta muy potente para la edición de ficheros de texto. Hoy vamos a ver como usarlo para buscar y reemplazar texto en un fichero.
Primero de todo para buscar una determinada cadena en un fichero usaremos simplemente:
/buscar
En este caso buscaremos desde la posición del cursos en adelante. Para buscar al revés lo haremos cambiando / por ?. Por ejemplo:
?buscar
Para el caso que queramos buscar y reemplazar en la línea actual del cursor haremos:
:s/buscar/reemplazar/
En este caso reemplazaría solo la primera cadena que coincidiera, para hacerlo para todas las coincidencias de una linea lo haríamos añadiendo una g al final:
:s/buscar/reemplazar/g
Para realizar la búsqueda y reemplazo en todo el fichero deberemos añadir % delante del todo de la expresión:
:%s/buscar/reemplazar/
En este caso se haría para todas las lineas del texto, pero solo la primera instancia de cada linea, por lo que para hacerlo para todas las apariciones en el texto deberemos completar la expresión con una g al final:
:%s/buscar/reemplazar/g
Actualización:
Para dar mayor visibilidad a lo que nos dice Pedro en los comentarios del post añadimos lo siguiente:
Podemos realizar la substitución para un conjunto de lineas. Por ejemplo, para realizar la substitución entre las lineas 3 y 10 haríamos lo siguiente:
:3,10s/buscar/reemplazar/
Igualmente añadiríamos la g para realizar la substitución para todas las apariciones de la linea:
:3,10s/buscar/reemplazar/g
Relacionados
Imprimir
8. June 2009 at 9:00 am :
Muy bueno!!, no sabia lo de la “g” al final
8. June 2009 at 12:04 pm :
Muy interesante la entrada, pero podriamos añadir que para buscar y reemplazar en un rango de líneas (pongamos que desde la m hasta la n) se puede usar:
:m,ns/buscar/reemplazar/
:m,ns/buscar/reemplazar/g
De hecho, no conocía lo del %, por lo que para reemplazar en todo el archivo lo que ponía era:
:1,$s/buscar/reemplazar/g
Es la primera vez que pongo comentarios en este blog, aunque os sigo desde hace ya bastante tiempo, y aprovecho para comentaros que me parece muy interesante y útil. Seguid asi
Un saludo.
8. June 2009 at 12:28 pm :
interesante, pero tengo una duda existencial,
oigo por todos los lados lo util que es vi como editor de textos, pero os hago una pregunta (desde mi ignorancia), para usarlo hay que estar todo el rato acordandote de todos los “atajos” como estos, es verdaderamente util?
yo suelo usar nano porque me parece sencillo,
bueno lo dejo ahi, a ver si podeis convencerme de aprender a usar vi
un saludo
8. June 2009 at 12:31 pm :
Al igual que Pedro, es mi segundo comentario en este blog, a pesar de seguirlo hace tiempo.
No habia visto nunca un blog tan claro conciso y concreto CCC, sobre administracion de sistemas.
Enhorabuena por vuestro trabajo, no entiendo como tiene tan poco seguimiento y tanta publicación.
Salu2
8. June 2009 at 12:55 pm :
Hola,
En realidad en los blog normalmente hay mucho más “usuario oyente” que “usuario activo”. En este en concreto hay unas 18000 paginas vistas mensuales, pero, por desgracia, rara vez aparecen comentarios.
Muchas gracias por tu comentario
Anímate y sigue comentando!
saludos,
8. June 2009 at 12:57 pm :
Hola Pedro,
Muy útil el comentario, lo añado al cuerpo del post ahora mismo.
saludos!
8. June 2009 at 1:04 pm :
Yo creo que para gustos los colores…
Personalmente me resulta útil el vi, pero no tengo nada en contra ni de nano ni de emacs. De hecho, antes usaba emacs en lugar de vi, pero me cansé de tener que instalarlo en todos los sistemas que accedía
La gran utilidad del vi es que lo puedes encontrar, en general, el todo UNIX que pises. Por eso creo que es muy recomendable almenos conocer el uso básico del mismo.
8. June 2009 at 4:05 pm :
En cuanto al vi, la razon esta clara, viene por defecto encualquier sistema UNIX y esto -sobre todo en sistemas embebidos y sistemas offline- lo convierte en un editor de uso obligatorio.
Si a esto le sumas que posee casi cualquier funcionalidad de un editor pero ejecutandose en modo texto, lo convierte en lo que es, el editor de texto mas utilizado por personal dedicado a tareas de integracion o sistemas.
11. June 2009 at 11:17 pm :
A Athilha:
No te preocupes por los atajos, los terminas aprendiendo y los aplicas sin pensar, hasta el punto de tener que hacer un pequeño esfuerzo para recordarlos conscientemente.
Pero suscribo eso de que para gustos los colores
Por cierto, vi incluso lo hay para sistemas windows, y por supuesto viene de serie en cualquier Unix (Al menos en Solaris, Linux y antes en SCO y Ultrix) Es por eso por lo que muchos usuarios de Unix “echamos los dientes” con vi y es nuestro editor de referencia.
Un saludo.
8. March 2010 at 6:59 pm :
Solo por complementar un poco más y así ayudar con estas recetas que siempre nos vienen tan bien, aquí va mi primer granito de arena:
Añadiendo c (confirm) al final de la sentencia de reemplazo obtendremos interactividad en las sustituciones. Esto nos puede salvar de alguna metedura de pata si no somos dioses en el uso de expresiones regulares, por ejemplo
.
Siguiendo con el último ejemplo propuesto:
:3,10s/buscar/reemplazar/gc
Salut!
9. March 2010 at 6:20 pm :
Muy buen tip!
saludos
27. September 2011 at 7:21 pm :
Gracias por el post es de utilidad.
10. May 2012 at 4:08 am :
ayudaos , mira tengo un archivo php y necesito buscar <? ese caracter y no la encuentro como lo hago muchas gracias por cualquier ayuda .. saludos