[LUG.ro] editor vi

Emiliano Gavilán lugro@lugro.org.ar
Wed, 16 Jul 2003 08:14:21 -0300 (=?X-UNKNOWN?Q?Hora_est=E1ndar_Sudam=E9rica_E=2E?=)


On Tue, 15 Jul 2003, folken wrote:

> > Gracias, cw me anda bien, pero no logro lo que estoy tratando de hacer.
> >
> > Se trata por ejemplo de editar un archivo, como el de reglas del
> > iptables. Entonces, en vez de cambiar una ip a mano una por una, busco
> > un comando que recursivamente las cambie todas desde la que yo diga a la
> > nueva que defina, por poner un caso.
> >
> > Gracias igual por tu respuesta.
> >
> > Folken.
> >
> > El mar, 15 de 07 de 2003 a las 17:09, Pat Carr escribió:
> > > folken wrote:
> > > > 	Tengo una consulta respecto al editor vi. No he podido aprender con que
> > > > comando puedo reemplazar un string por otro, menos si es de manera
> > > > repetitiva.
> > >
> > > para reemplazar una palabra por otra, posicionate al principio de la
> > > palabra y tipea 'cw' (change word); el vi entra en modo edicion y
> > > sobreescribe la palabra escrita con lo que entres en el teclado. Para
> > > salir, con 'Esc'. Para repetir un comando, tipea el numero de veces que
> > > lo queres repetir en el teclado numerico, no vas a ver nada escrito,
> > > pero al ejecutar un comando lo va a repetir 'n' veces.
> > >    ej: 2dd, borrara las dos lineas a partir del cursor.
> > >

Tambien podrias usar sed, que es un editor no interactivo. En este pones
las reglas de edicion (creo que en tu caso seria
"s/regexp-a-cambiar/reemplazo/g". Con la g final te aseguras de que haga
los reemplazos todas las veces que sea necesario), nombras un archivo o lo
toma desde stdin y sale por stdout.

Quedaria algo asi:

sed -e 's/acambiar/cambiado/g' < archivo_a_editar > archivo_editado

Espero que te sea util.

Una buena referencia a SED la podes encontrar en
http://www.hackemate.com/textos/O'reilly%20-%20Complete%20Bookshelf/unix_bookshelf/sedawk/index.htm

Saludos

Emiliano