Это должно прекратиться, когда встречаются две последовательные пустые строки независимо от нечетного / четного сочетания пустых строк с непустыми строками:
Не печатать две пустые строки:
sed -n 'N;/^\n$/q;P;D'
Распечатать один из них:
sed -n 'N;/^\n$/{P;q};P;D'
Распечатать их обоих:
sed -n 'N;/^\n$/{p;q};P;D'
Изменить:
А вот как вы могли бы заставить это работать в вашем диапазоне:
sed -n '/^TODO/,${N;/^\n$/q;P;D}'
Редактировать 2:
В комментариях и отредактированных требованиях * dan (кажется, это работает, чтобы найти шаблон в диапазоне, который заканчивается двумя пустыми строками, несколько раз в файле:
sed -n '/^TODO/,/^$/{H;N;/^\n$/{b};p}'