Grep/egrep 正则表达式无法正常工作?

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它,它会再次返回所有内容。

答案1

\d{3,6}被 Bash 解析为d3 d6。这意味着它被egrep作为两个参数传递给,这意味着它试图将第二个参数作为文件打开,因为这是 grep 的语法。

grep [OPTIONS] PATTERN [FILE...]

解决方案很简单。停止 Bash 干扰并引用你的正则表达式:

... | egrep '\d{3,6}'

相关内容