Есть много способов сделать это, используя обычные утилиты оболочки.
Мое решение:
grep -cve '^\s*$' <file>
Поиск строк в строках, которые не соответствуют (-v), которые соответствуют шаблону (-e) '^ \ s * $', который является началом строки, за которой следует 0 или более пробелов символы, за которыми следует конец строки (т. е. нет содержимого, отличного от пробела), и отображается количество совпадающих строк (-c) вместо самих совпадающих строк.
Преимущество этого метода перед методами, включающими конвейерную обработку в wc
, заключается в том, что вы можете указать несколько файлов и получить отдельный счетчик для каждого файла:
$ grep -cve '^\s*$' *.hh
config.hh:36
exceptions.hh:48
layer.hh:52
main.hh:39