Это решение также заботится о последних пустых строках в файле:
sed -r -n '
/^ *$/!{p;b} # non-blank line - print and next cycle
h # blank line - save it in hold space
:loop
$b end # last line - go to end
n # read next line in pattern space
/^ *$/b loop # blank line - loop to next one
:end # pattern space has non-blank line or last blank line
/^ *$/{p;b} # last blank line: print and exit
H;x;p # non-blank line: print hold + pattern space and next cycle
'