Многострочный sed
Как известно, sed обрабатывает вход построчно. Если надо заменить многострочный паттерн, то можно воспользоваться флагом -z, который указывает, что конец строки теперь нуль-терминатор \0, а не обычный \n. Например,
echo -e "line1\n\nline2\n\n\nline3" | sed -z 's/\n\n*/\n/g'
выведет
line1
line2
line3
Но работает это только для GNU sed. Маковский такое не поддерживает, и подключить там многострочную обработку — это какая-то магия (которую я даже не буду пытаться запоминать и пробовать).
Комментарии