BSD grep返回不正确的结果

时间:2015-10-14 08:26:49

标签: macos bash grep gnu bsd

在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返回它正在使用BSD。 MacPorts现在有一些问题,所以我不能用它来安装。

我还将bash更新到最新版本,所以我很确定这不是我麻烦的来源。

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

有人有解决方案吗?要么修复BSD的问题,要么使用已安装的自制GNU grep。 欢呼声。

1 个答案:

答案 0 :(得分:0)

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

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