BSD grep 返回不正确的结果

BSD grep returning incorrect results

在 OSX 上执行 grep 时,我的结果不正确。我正在使用 -aob 查找具有多个匹配项的子字符串的偏移量。 'a' 表示我正在使用字符串,'o' 仅显示结果,'b' 用于字节偏移。

echo "ABDABCABC" | grep -aob "ABC"

输出:

0:ABC
ABC

实际上输出应该是:

3:ABC
6:ABC

默认OSX使用BSD grep,好像有这个问题。我正在使用 El Capitan,但其他 Mac 早期版本的用户体验相同。我试过通过自制软件安装 GNU grep。不过,我似乎无法将它用于 grep,grep -V return 它正在使用 BSD。 MacPorts 现在有一些问题,所以我不能用它来安装。

我也已将 bash 更新到最新版本,所以我很确定这不是我的问题的根源。

另外请注意,使用 Perl 替代 grep 不是一种选择,这是一项家庭作业,其中一个条件是不使用 Perl。

有人对此有解决方案吗?解决 BSD 问题或使用已安装的自制软件 GNU grep 的方法。 干杯。

BSD grep 似乎只给出匹配行开头的字节偏移量,而不是找到的模式。

关于您关于 GNU 的问题 grep。我不使用 Homebrew,但根据此 grep formula 它默认安装时带有 g 前缀。尝试:ggrep