Reading output with lots of empty lines can be a waste of screen space. For instance, some System V versions of man ( 50.1 ) show all the blank lines between manual pages. To stop that, read your file or pipe it through cat -s . (Many versions of more ( 25.3 ) have a similar -s option.) The -s option replaces multiple blank lines with a single blank line. (If your cat doesn't have -s , see the sed alternative at the end.)
cat -s might not always seem to work. The problem is usually that the "empty" lines have SPACE, TAB, or CTRL-m characters on them. The fix is to let sed "erase" lines with those invisible characters on them:
%sed 's/^[ [SPACE] [TAB] [CTRL-v] [CTRL-m] ]*$//'
file
| cat -s
In vi ( 31.6 ) and many terminal drivers ( 42.1 ) , the CTRL-v character quotes the CTRL-m (RETURN) so that character doesn't end the current line.
If you don't have cat -s , then sed can do both jobs:
%sed -e 's/^[ [SPACE] [TAB] [CTRL-v] [CTRL-m] ]*$//' -e '/./,/^$/!d'
file
-