lunes, 24 de septiembre de 2012

ED editor de línea - tutorial


Ed es un editor de texto orientado a línea.

Puede usarse interactivamente o en shell scripts.

Ed es el editor original de Unix. Fue escrito por primera vez por Ken Thompson en 1971.

Ed es un editor pequeño, con pocas dependencias, que puede ayudarnos a editar ficheros en situaciones donde otros editores no son usables.


INSTALACIÓN (DEBIAN)


$ sudo aptitude install ed
$ which ed
/bin/ed
$ ed # run ed program.


EJECUTANDO EL EDITOR ED


$ ed file_name # Abre el fichero file_name para editarlo. Los cambios no se guardarán hasta que introduzcamos el comando w.


ESTRUCTURA DE LOS COMANDOS


Ed funciona aceptando comandos que editan partes del fichero.


Los comandos normalmente presentan esta estructura:

[DIRECCIÓN [,DIRECCIÓN]]COMANDO[PARÁMETROS]

Los comandos son de una letra de longitud.

Dirección indica a qué líneas se aplicará el comando.

Los parámetros se pasan al comando.


MOSTRAR Y OCULTAR EL PROMPT


Nuestro primer comando: pulsa la P mayúscula y después enter

P : muestra el prompt (aparece un asterisco)

El prompt indica que estamos en modo comando (vs modo input), podemos introducir comandos.


FINALIZAR EL EDITOR ED


Cuando queremos dejar de ejecutar el editor, introducimos el comando q:

q : cerramos el editor ed.


COMANDOS DEL SHELL


! : ejecuta un comando del shell

P.ej:

!ls : ejecuta el comando de shell ls, listando el contenido del directorio actual.

*!date : ejecuta el comando date
Sat Sep 22 01:32:33 CEST 2012
!


COMANDO DESHACER


Si nos equivocamos, podemos deshacer el error con el comando:

u : deshace el último comando


MANIPULANDO FICHEROS


Edita un fichero nuevo o lo guarda en otro diferente:
e foo.txt : edita el fichero foo.txt

Guarda los cambios actuales en un fichero:
w : Guarda los cambios en el fichero actual.

w foo.txt : Guarda los cambios en el fichero foo.txt

Edita la salida del comando de shell que ejecutamos:
e !date : edita la respuesta del comando de shell date.


MOVIÉNDONOS A TRAVÉS DEL FICHERO


1 : vamos a la primera línea (la primera línea se convierte en la línea actual)
$ : vamos a la última línea
. : línea actual
3 : nos movemos a la línea número tres.
-2 : nos desplazamos dos líneas hacia atrás.
+4 : nos movemos cuatro líneas hacia adelante.

/regex/ : nos desplazamos a la siguiente línea que haga match con la expresión regular regex.

P.ej:
/^foo/ : vamos a la línea siguiente que comienze con "foo".


?regex? : nos movemos a la línea anterior que haga match con la exp. regular regex.

P.ej:
?foo$? : nos movemos a la línea anterior que termina en "foo".


MUESTRA LÍNEAS


p : muestra la línea actual
.p : muestra la línea actual

1p : muestra la primera línea

1,$p : imprime todas las líneas del fichero
,p : idem

-1p : muestra la línea anterior a la actual.

.,$ : imprime las líneas desde la actual hasta el final del fichero.


Si queremos mostrar los números de línea:

1,$n : imprime todas las líneas junto con su número correspondiente.
,n : idem

n : muestra la línea actual mostranto su número.



SUSTITUYE UNA EXPRESIÓN REGULAR


`(.,.)s /RE/REPLACEMENT/'
`(.,.)s /RE/REPLACEMENT/g'
`(.,.)s /RE/REPLACEMENT/N'

Remplaza el texto de las líneas direccionadas que hagan match con la expresión regular RE, por el REPLACEMENT.

Por defecto, solo el primer match de cada línea es remplazado.

Si se proporciona el sufijo `g' (global), entonces todos los match son remplazados.

El sufijo N, donde N es un número positivo, hace que sólo se remplacen hasta el match N.


P.ej:

2s/foo/bar/ : Cambia en la línea 2 "foo" por "bar"

$-1/foo/bar/ : Cambia "foo" por "bar" en la línea anterior a la actual

1,$s/foo/bar : Cambia el primer "foo" por "bar" en todas las líneas

1,$s/\//slash : Cambia "/" por "barra" en cada línea

s/foo/bar/g : Cambia todos los "foo" por "bar" en la línea actual.



MODO INPUT VS MODO COMANDO


Algunos comandos causan que el editor entre en el modo input (p.ej: c, i, a), para así poder introducir datos en lugar de comandos.

. : un único punto en una línea hace que ed vuelva a modo comando.


COMANDO CAMBIAR


*3c : Cambia la línea número tres. (Entra en modo input)
Esta es la línea número tres
.
*

La línea número tres contiene ahora el texto "Esta es la línea número tres", el contenido antiguo es borrado.


COMANDO AÑADIR


*2a : añade después de la segunda línea. (Entra en modo input)
foo bar baz # esta será la nueva tercera línea
. # vuelve a modo comando
*

La anterior tercera línea se sitúa ahor en la cuarta posición. En tercera posición aparece ahora la nueva línea "foo bar baz".


COMANDO INSERTAR


*3i : inserta una nueva línea en la posición tercera, moviendo todas las siguientes una posición.
hola
.
*

La anterior tercera línea se ha movido a la cuarta posición. "hola" es la nueva tercera línea.


BORRAR UNA LÍNEA


3d : borra la línea número tres.


MUEVE UNA LÍNEA


1m$ : mueve la primera línea hasta después del fin del fichero.

2m0 : mueve la segunda línea hasta después del comienzo del fichero.

3m1 : mueve la tercera línea hasta después de la primera línea.



EJECUTA UNA LISTA DE COMANDOS


g/Regexp/command_list : Encuentra las líneas que hagan match con la expresión regular Regexp y ejecuta la lista de comandos command_list en ellas.

P.ej:
g/foo/s/oo/bar/p # encuentra todas las líneas que contienen "foo", cambia "oo" por "bar", e imprime la línea resultante.



REFERENCIA:


$ info ed

Página oficial de Ed

Ed (Wikipedia)



TRADUCIDO DE:


ED line editor - tutorial

No hay comentarios:

Publicar un comentario