Grep / egrep регулярное выражение не работает правильно?

Я, кажется, неправильно использую grep. Заметьте:

>    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

Но когда я использую более конкретное регулярное выражение, чтобы попытаться перейти на количество цифр в наборе изменений, оно становится пустым.

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

Почему это может быть? Если я просто использую \d сам по себе, он снова возвращает все.

0
задан 26 May 2017 в 11:43

1 ответ

\d{3,6} анализируется Bash как d3 d6. Это означает, что передается egrep как два аргумента, что означает, что это пытается открыть второе как файл, потому что это - синтаксис grep.

grep [OPTIONS] PATTERN [FILE...]

решение просто. Остановите вмешательство Bash и заключите Ваш regex в кавычки:

... | egrep '\d{3,6}'
3
ответ дан 26 May 2017 в 21:43

Другие вопросы по тегам:

Похожие вопросы: