sed (informática)

De Wikipedia, la enciclopedia libre
Saltar a: navegación, búsqueda
Para otros usos de este término, véase Sed (desambiguación).
sed
Información general
Extensiones comunes .sed
Paradigma imperativo, no estructurado
Apareció en 1973 - 1974
Diseñado por Lee E. McMahon
Tipo de dato únicamente strings
Implementaciones sed, GNU sed, busybox sed, psed, HHsed, super sed, sedmod, ssed.
Influido por ed
Ha influido a Perl
Sistema operativo Multiplataforma

Sed es un editor de flujo, una potente herramienta de tratamiento de texto para el sistema operativo Unix que acepta como entrada un archivo, lo lee y modifica línea a línea de acuerdo a un script, mostrando el resultado por salida estándar (normalmente en pantalla, a menos que se realice una redirección). Sed permite manipular flujos de datos, como por ejemplo cortar líneas, buscar y reemplazar texto (con soporte de expresiones regulares), entre otras cosas. Posee muchas características de ed y ex.

Como lenguaje de programación es Turing completo. Provee instrucciones para realizar saltos condicionales e incondicionales a cualquier posición del script o al final del mismo. Análogas a GOTO, permiten la programación no estructurada.

Contenido

[editar] Sintaxis

La sintaxis general de la orden sed es:

$ sed [-n] [-e'script'] [-f archivo] archivo1 archivo2 ...

donde:

  • -n indica que se suprima la salida estándar.
  • -e indica que se ejecute el script que viene a continuación. Si no se emplea la opción -f se puede omitir -e.
  • -f indica que los órdenes se tomarán de un archivo

Un script consiste en una o varias órdenes del editor (uno por línea o separados por ";") con la siguiente estructura:

[inicio[,fin]] función[argumentos]

donde inicio y fin hacen referencia a las líneas (número de línea) afectadas (o intervalo de líneas); función hace referencia a la orden de editor a aplicar y argumentos hace referencia a los argumentos necesarios para la ejecución de la función.

Para expresar las órdenes en varias líneas es posible utilizar comillas o apóstrofos, u opcionalmente añadir el carácter barra invertida "\" antes de pulsar Intro.

[editar] Ejemplos de uso

Cambia todas las minúsculas a mayúsculas de archivo:

$ sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/' archivo

Borra la 3ª línea de archivo:

$ sed '3d' archivo

Añade una línea con el contenido "Línea insertada" después de cada línea del archivo:

$ sed 'a\
 Línea insertada' archivo

Elimina todas las secuencias de Escape del tipo Xm y Zm que se suelen usar para letras en negrita, etc. para vt100 y cambia el formato de los saltos de línea, de un archivo almacenando los resultados en un archivo nuevo (^[ representa al caracter de escape, ingresable por medio de control V + escape, y ^M representa al caracter de retorno de carro):

$ sed 's/'''^['''\[[0-9]*m//g
      s/'''^['''\[[0-9]*w//g
      s/'''^M'''/\
 /g' archivo > archivo.nuevo

Determina si un número natural mayor o igual a 2, es primo:

$ echo 42 | sed -e 's/[0-9]/|0123456789n&/g; s/\(.\)[^n]*n\1//g
     :mult; s/[0-9]|/|0000000000/g; /[0-9]|/bmult
     s/[1-9]/0/g; s/|*/00|/; h
     :siguiente; s/\(0*\)|\1/|/; /|$/{s/.*/es primo/;q}; g
         :restar; s/^\(0*\)|\1/\1|/; trestar
         /|$/{ s/.*/no es primo/; q }
         g; s/^/0/; h
     bsiguiente'

[editar] Órdenes usuales de sed

  • a\: Tras terminar el ciclo de procesamiento del script sobre la línea actual, añade la línea especificada a continuación.
  • c\: Sustituye la línea actual por la especificada a continuación.
  • d: Borra la línea actual.
  • i\: Similar a a\, pero es insertada inmediatamente (sin esperar a finalizar el ciclo).
  • p: Imprime la línea actual, inclusive cuando se utiliza la opción -n.
  • q: Abandona el proceso cuando se alcanza la línea especificada.
  • r archivo: Lee un archivo, añadiendo su contenido a la salida.
  • w archivo: Copia la línea en archivo.
  • =: Imprime el número de línea.
  • !orden: Aplica la orden si la condición previa al signo de admiración, no selecciona la línea actual.

[editar] Véase también

[editar] Enlaces externos

Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Imprimir/exportar
Herramientas
En otros idiomas