Попробуйте следующее:
grep -v -e '^$' foo.txt
Опция -e
позволяет сопоставлять шаблоны регулярных выражений.
Одинарные кавычки вокруг ^$
заставляют его работать на Cshell. Другие оболочки будут счастливы с одинарными или двойными кавычками.
ОБНОВЛЕНИЕ: Это работает для меня с файлом с пустыми строками или «полностью пустым пространством» (например, строки Windows с окончаниями строк в стиле «\ r \ n»), в то время как приведенное выше удаляет только файлы с пустыми строками и стилем unix окончания строки:
grep -v -e '^[[:space:]]*$' foo.txt