El siguiente ejemplo compacta una secuencia de líneas vacías en una sóla línea vacía.
1 > cat N.sed 2 /^$/{ 3 N 4 /^\n$/D 5 }Si la línea es vacía se lee la línea siguiente. Si esta también es vacía el espacio de patrones contiene (sin que se lea una nueva línea). Por tanto nada ha sido impreso, no se ejecuta el comnado final
p
que actúa por defecto.
Como el espacio de trabajo contiene con el patrón especificado en línea 2
y se lee la siguiente línea. Si esta nueva línea es no vacía, no se ejecutará la orden
vacía y la nueva línea no vacía.
Al ejecutar este ``script'' sobre un fichero conteniendo una secuencia de líneas en blanco:
> cat N.test one empty two empty lines three empty lines end of fileSe obtiene el resultado:
> sed -f N.sed N.test one empty two empty lines three empty lines end of fileUn buen ejercicio es intentar predecir la conducta de esta otra solución alternativa, en la que la supresión D es sustituida por la d:
/^$/{ N /^\n$/d }¿Qué ocurrirá? ¿Es correcta esta segunda solución?
Casiano Rodríguez León