Você recebe uma mensagem de erro porque não escapou de !
, que tem um significado especial no shell. Para usar isso como parte do parâmetro padrão de grep
, você deve citá-lo ou fugir dele.
Em vez de citar cada caractere especial um por um, é muito mais fácil colocar o padrão inteiro entre aspas simples ou duplas (dependendo do seu propósito), por exemplo:
grep -a -P '"stored": "*123*(?!00)[0-9]{2,5}#"'
Observe também que substitui -E
por -P
, porque lookahead negativo (?!...)
não funciona em implementações típicas de grep
extended regex. O -P
sinalizador ativa expressões regulares Perl, que devem suportar isso.