Существует несколько различных синтаксисов регулярных выражений. Значение по умолчанию для grep называется basic синтаксис в документации grep.
От человека grep (1) :
In basic regular expressions the meta-characters
?, +, {, |, (, and ) lose their special meaning; instead
use the backslashed versions \?, \+, \{, \|, \(, and \).
Поэтому вместо +
вы должны были набрать \+
:
grep '^[[:space:]]\+' FILE
Если вам нужно больше возможностей от регулярных выражений, я также призываю вас взглянуть на синтаксис регулярных выражений Perl. Они вообще считаются самыми выразительными. Существует библиотека C под названием PCRE, которая эмулирует их, и grep ссылается на нее. Чтобы использовать их (вместо основного синтаксиса), вы можете использовать grep -P .