
A entrada de amostra é
1
2
3
4
5
6
7
8
9
A saída esperada é
1
2
3
---
4
5
---
6
7
8
---
9
Responder1
Mão Única:
cat -s file | sed 's/^$/---/'
Da página de manual do gato:
-s, --squeeze-blank
never more than one single blank line
Depois cat
de comprimir as linhas em branco, sed
substitua o espaço em branco por um---
Responder2
Uma abordagem compatível com POSIX usando o recurso de registro multilinha do AWK (RS nulo):
awk 1 RS= ORS='\n---\n' file
Isso produz uma saída idêntica à saída desejada, exceto por uma linha "---" no final. Se essa discrepância for inaceitável, ela poderá ser eliminada com um filtro sed:
... | sed '$d'