¿Cómo reemplazar varias líneas en blanco con una línea específica que no esté en blanco?

¿Cómo reemplazar varias líneas en blanco con una línea específica que no esté en blanco?

La entrada de muestra es

1
2
3


4
5



6
7
8



9

El resultado esperado es

1
2
3
---
4
5
---
6
7
8
---
9

Respuesta1

De una sola mano:

cat -s file | sed 's/^$/---/'

De la página de manual de cat:

   -s, --squeeze-blank
          never more than one single blank line

Una vez que cathaya comprimido las líneas en blanco, sedreemplace el espacio en blanco con un---

Respuesta2

Un enfoque compatible con POSIX que utiliza la capacidad de registro multilínea de AWK (RS nulo):

awk 1 RS= ORS='\n---\n' file

Esto produce una salida idéntica a la salida deseada, excepto por una línea "---" al final. Si esa discrepancia es inaceptable, se puede eliminar con un filtro sed:

... | sed '$d'

información relacionada