Grep / egrep regex não está funcionando corretamente?

0

Parece que estou usando grep incorretamente. Observe:

>    hg log <filepath> | egrep changeset
changeset:   3961:9dedc55e030a
changeset:   3651:d23495ab1168
changeset:   2974:6aa71cb2c575
changeset:   2756:9dd7fb635678
changeset:   2532:d3ced9af4d6c
changeset:   2459:9d5f5553b851
changeset:   1835:4558836beed1
changeset:   1628:517d0239e830

Mas quando eu uso um regex mais específico, para tentar ir pelo número de dígitos no changeset, ele aparece em branco.

>    hg log <filepath> | egrep \d{3,6}
>    egrep: d6: No such file or directory

Por que isso pode ser? Se eu usar o \d sozinho, ele retornará tudo novamente.

    
por Aerovistae 15.04.2015 / 00:15

1 resposta

3

\d{3,6} está sendo analisado pelo Bash como d3 d6 . Isso significa que está sendo passado para egrep como dois argumentos, o que significa que está tentando abrir o segundo como um arquivo, porque é a sintaxe do grep.

grep [OPTIONS] PATTERN [FILE...]

A solução é simples. Pare de Bash interferindo e cite sua regex:

... | egrep '\d{3,6}'
    
por Oli 15.04.2015 / 00:43