Uma expressão regular estendida começando com * produzirá um resultado indefinido , de acordo com o padrão POSIX .
Isto é com grep no OpenBSD 6.4:
$ grep -E '*hello'
grep: repetition-operator operand invalid
O GNU grep parece ignorar totalmente o * :
$ printf 'hello\n' | ggrep -E '*hello'
hello
De acordo com o mesmo padrão , se você usar expressões regulares básicas ( grep sem -E ), um * no início de uma expressão ou subexpressão dentro de \(...\) (ou logo após um ^ inicial) deve ser interpretado como um literal * .