
Пример входных данных:
1
2
3
4
5
6
7
8
9
Ожидаемый результат:
1
2
3
---
4
5
---
6
7
8
---
9
решение1
В одну сторону:
cat -s file | sed 's/^$/---/'
Из страницы руководства cat:
-s, --squeeze-blank
never more than one single blank line
После того, как cat
сжал пустые строки, sed
заменяет пробел на---
решение2
Подход, совместимый с POSIX, с использованием возможности многострочной записи AWK (нулевой RS):
awk 1 RS= ORS='\n---\n' file
Это дает вывод, идентичный желаемому, за исключением строки "---" в самом конце. Если это несоответствие неприемлемо, его можно устранить с помощью фильтра sed:
... | sed '$d'