Saltar la navegación

El ciclo de sed

El comando sed dispone de dos zonas de memoria para llevar a cabo su función, ambas inicialmente vacías. Por un lado se encuentra la zona de trabajo (pattern space) que es donde actúan normalmente los comandos de sed, y por otro lado, tenemos la zona auxiliar (hold space) usada normalmente para guardar un texto que se empleará posteriormente. Existen una serie de comandos que comunican estas dos zonas que se explicarán en otro apartado del tutorial.

Para cada línea de texto del flujo de entrada, sed realiza el siguiente ciclo:

  1. Lee una línea de texto del flujo de entrada, le elimina el carácter de nueva línea (\n) si lo tiene (la última línea de un fichero puede no tener \n, y hay ficheros cuyas líneas acaban en \0 - nul), borra la zona de trabajo (pattern space) y copia en ella la línea de texto.
  2. Ejecuta sobre la zona de trabajo los comandos del script secuencialmente, siempre que el ámbito del comando se cumpla.
  3. Se envía por la salida estándar (pantalla por defecto) el texto de la zona de trabajo, y se añadirá un \n si en el punto 1 se eliminó. Esto siempre que no se borre la zona de trabajo con el comando d.

Entre dos ciclos, la zona de trabajo se borra a menos que se usen comandos especiales, en cambio, la zona auxiliar mantiene la información.

Diagrama del comando sed