我似乎使用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}'