Para encontrar um espaço, você precisa usar [:space:]
dentro de outro par de colchetes, que será parecido com [[:space:]]
. Você provavelmente quis expressar grep -E '^[[:space:]]*h'
Para explicar por que seu atual falha:
Como está, [:space:]*h
inclui uma classe de caracteres à procura de qualquer um dos caracteres: :
, s
, p
, a
, c
e e
que ocorrem em qualquer número de vezes (incluindo 0), seguido por h
. Isso corresponde muito bem à sua string, mas se você executar grep -o
, verá que correspondeu apenas a h
, não o espaço.
Se você adicionar um quilate ao início, uma dessas letras ou h
deve estar no início da string para corresponder, mas nenhuma é, portanto, não corresponde.