Это - хороший пример для изучения регулярных выражений.
Вероятно, надо убирать ещё и строчки, где между началом и диезом находятся пробелы. Итак:
grep -Ev '^([[:space:]]*#.*)*$' ...
где:
-E - использовать расширенную версию регулярных выражений;
[[:space:]] - любой пробельный символ;
[[:space:]]* - пробельные символы в любом количестве от нуля и выше;
#.* - знак комментария и любые символы после него;
(...)* - то, что внутри скобок, может присутствовать в количестве ноль или более раз (звёздочку можно заменить на вопр.знак или на {0,}).
Впрочем, есть а др.вариант:
grep -E '^[[:space:]]*[^[:space:]#]' ...
где:
^[[:space:]]* - любое количество пробелов в начале строкИ;
[^[:space:]#] - и после них хоть что-то, кроме пробела и комментария.
PS: Все мои рекомендации надо тщательно проверить, т.к. сейчас у меня под рукой нет Shell.