'git grep'和Mac OS X和BSD上的字边界

时间:2011-09-30 08:35:36

标签: regex macos git grep bsd

我在我的linux开发服务器上定期运行git grep "\<blah\>",但我发现我无法在Mac上使用\<\>(Mac OS X 10.6.8)(不能使用=它没有找到任何东西)。 Mac中的正则表达式语法是否不同?

我尝试使用git grep -E "\<blah\>"但无济于事! :-(

3 个答案:

答案 0 :(得分:4)

我猜这是由BSD与Linux grep库引起的。

查看git grep中的-w(仅在字边界处匹配模式)选项是否适合您:

$ git grep -w blah

答案 1 :(得分:4)

在努力解决这个问题之后,我在BSD邮件列表上找到了this very helpful post。所以这是(虽然相当难看)解决方案:

git grep "[[:<:]]blah[[:>:]]"

git-grep的-w标志也有效,但有时您只想匹配单词的开头或结尾。

更新:在OS X 10.9“Mavericks”中已经发生了变化。现在,您可以使用\<\>\b[[:<:]]不再受支持。

答案 2 :(得分:3)

您可以使用PCRE支持编译git,并使用git grep -P "\bblah\b"作为字边界。

以下是如何使用OSX Homebrew编译git的指南: http://realultimateprogramming.blogspot.com/2012/01/how-to-enable-git-grep-p-on-os-x-using.html