Google
Web dns.bdat.net
next up previous contents
Next: Otras órdenes útiles para Up: Uso de expresiones regulares Previous: egrep   Índice General


sed

sed es un editor de texto no interactivo. Su principal utilidad es poder editar ficheros de textos desde un programa. Hay que observar que el resultado de la edición se muestra en la salida estándar.

La orden sed dispone de diversas opciones, pero aquí sólo vamos a ver una, la sustitución de un texto por otro.

En general la orden sed se usa como:

$ sed orden_sed fichero

Donde:

orden es una instrucción de sed. Entre las órdenes está 's' que se utiliza para sustituir texto. En este caso la orden queda como:

s/expr_reg_origen/nuevo valor/

Si al final añadimos 'g' indicamos que haga una sustitución global en todo el fichero.

Vamos a ver un ejemplo:

Supongamos que tenemos un fichero de texto llamado ftexto con el siguiente contenido:

$ cat ftexto 
 enero, febrero, noviembre, abril
 a12, a3, s34, e56,
 123,
 lunes
 martes 23
 37

Veamos los resultado que obtendríamos con diferentes órdenes de sed:

$ sed "s/12/zzzzzzz12zzzzzzzz/g"
 enero, febrero, noviembre,
 abril
 azzzzzzz12zzzzzzzz, a3, s34, e56,
 zzzzzzz12zzzzzzzz3, lunes
 martes
 23
 37

Otro ejemplo:

$ sed "s/noviembre/diciembre/" ftexto
 enero, febrero,
 diciembre, abril
 a12, a3, s34, e56,
 123, lunes
 martes 23
 37

También podemos hacer que el texto buscado aparezca en el texto sustituido, usando &. Por ejemplo

$ sed "s/[0-9][0-9]/& dos numeros/g"
 ftexto
 enero, febrero, noviembre, abril
 a12 dos numeros, a3, s34 dos numeros,
 e56 dos numeros,
 12 dos numeros3, lunes
 martes 23 dos numeros
 37 dos numeros

Como la orden sed escribe sus resultados en la salida estándar, si queremos modificar un fichero tendremos que hacerlo en varios pasos redirigiendo la salida estándar.

Por ejemplo, si queremos que en el nuevo fichero ftexto donde pone lunes ponga domingo tendríamos que poner:

$ sed "s/lunes/domingo/" ftexto >ftexto.nuevo
$
 cp ftexto.nuevo ftexto
$ rm ftexto.nuevo

next up previous contents
Next: Otras órdenes útiles para Up: Uso de expresiones regulares Previous: egrep   Índice General
Pedro Pablo 2001-12-14