
Die Beispieleingabe ist
1
2
3
4
5
6
7
8
9
Das erwartete Ergebnis ist
1
2
3
---
4
5
---
6
7
8
---
9
Antwort1
Ein Weg:
cat -s file | sed 's/^$/---/'
Aus der Manpage von cat:
-s, --squeeze-blank
never more than one single blank line
Sobald cat
die Leerzeilen ausgequetscht sind, sed
ersetzt man das Leerzeichen durch ein---
Antwort2
Ein POSIX-kompatibler Ansatz unter Verwendung der Mehrzeilen-Datensatzfunktion von AWK (Null-RS):
awk 1 RS= ORS='\n---\n' file
Dies führt zu einer Ausgabe, die mit der gewünschten Ausgabe identisch ist, mit Ausnahme einer Zeile "---" am Ende. Wenn diese Diskrepanz nicht akzeptabel ist, kann sie mit einem Sed-Filter beseitigt werden:
... | sed '$d'