Friday, January 7, 2011

Tratamiento de textos con Sed

Sed es un sencillo editor de flujos que esta disponible en prácticamente en todos los sabores de Unix, SED junto con AWK forman el dúo dinámico en lo que concierne al tratamiento de textos. Con sed vamos a poder reemplazar textos, cortar lineas, entre otras cosas, y claro, con soporte para expresiones regulares.

Para que conozcan como funciona Sed les voy dar varios ejemplos, y para ello crearemos un fichero con el siguiente contenido.



Esta es la linea numero 1
#Esta es la linea numero 2
Ejemplos para saber como
funciona sed, super facil

Teniendo este fichero almacenado vamos a continuar con los ejemplos, si por ejemplo queremos eliminar todas las lineas que contengan la palabra "linea" usamos sed de la siguiente manera:

cat fichero | sed -e '/linea/d'

Esto nos lanzara el siguiente resultado:


Ejemplos para saber como
funciona sed, super facil

Como hemos visto hemos eliminado las lineas que contenian la palabra "linea", partiendo de esto podemos eliminar solamente la que empieze con la palabra Ejemplos:

cat fichero | sed -e '/^Ejemplos/d'

Esto nos lanzara el siguiente resultado:

Esta es la linea numero 1
#Esta es la linea numero 2
funciona sed, super facil

Y si queremos que nos muestre lo contrario, en vez de usar d ponemos p, y agregamos la opcion n, por ejemplo:

cat fichero | sed -ne '/^Ejemplos/p'

Y esto nos lanzara el siguiente resultado:

Ejemplos para saber como

Ven que fácil y útil es Sed?, continuemos... Si por ejemplo queremos eliminar la primera linea del fichero, simplemente lo hacemos asi:

cat fichero | sed -e '1d'

Esto nos lanzara el siguiente resultado:

#Esta es la linea numero 2
Ejemplos para saber como
funciona sed, super facil

Si queremos eliminar la linea 1 y 2, lo hacemos asi:

cat fichero | sed -e '1d' -e '2d'

Y nos lanzara el siguiente resultado:

Ejemplos para saber como
funciona sed, super facil

Si queremos eliminar un rango de lineas, por ejemplo desde la linea 1 hasta la 3, lo hacemos asi:

cat fichero | sed -e '1,3d'

Esto nos lanzara el siguiente resultado:

funciona sed, super facil

Y como sabemos ya, para mostrar lo contrario:

cat fichero | sed -ne '1,3p'

Y nos lanzara:

Esta es la linea numero 1
#Esta es la linea numero 2
Ejemplos para saber como

Hasta ahora nos hemos limitado a eliminar lineas de distintas maneras, ahora vamos a sustituir.

Si por ejemplo queremos sustituir la palabra "facil" por "dificil", lo hacemos de la siguiente manera:

cat fichero | sed -e 's/facil/dificil/g'

Esto nos lanzara el siguiente resultado:

Esta es la linea numero 1
#Esta es la linea numero 2
Ejemplos para saber como
funciona sed, super dificil

Si queremos sustituir la palabra linea por bebe solamente en la linea 1, lo hacemos así:

cat fichero | sed -e '/1/s/linea/bebe/g'

Esto nos lanzaría el siguiente resultado:

Esta es la linea numero 1
#Esta es la bebe numero 2
Ejemplos para saber como
funciona sed, super facil

Si queremos sustituir la palabra linea por bebe solamente en la linea que empiece con #:

cat fichero | sed -e '/^#/s/linea/bebe/g'

Esto nos lanzaría:

Esta es la linea numero 1
#Esta es la bebe numero 2
Ejemplos para saber como
funciona sed, super facil

También podemos guardar una serie de comandos para luego ser ejecutados, por ejemplo creamos un fichero llamado comandos.sed y escribimos lo siguiente:

1,2{
            s/linea/bebe/g
            s/linea/bebe/g
      }

Luego lo guardamos y lo ejecutamos así:

cat fichero | sed -f comandos.sed

Y nos lanzara

Esta es la bebe numero 1
#Esta es la bebe numero 2
putos para saber como
funciona sed, super facil


Como vemos sed es una herramienta completamente practica que nos puede ayudar en nuestras tareas diarias, esto es simplemente una introducción de lo que pueden llegar a hacer con Sed,  espero que les haya servido, hasta la próxima.

Saludos








2 comentarios:

Anonymous said...

Muy interesante, gracias por el aporte!

A seguir así! ;)

Ramphis Che said...

Jeje, gracias a ti por visitar el blog!

Post a Comment