
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 cat
haya comprimido las líneas en blanco, sed
reemplace 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'