在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。 欢呼声。
答案 0 :(得分:0)
BSD grep
似乎只给匹配行开头的字节偏移,而不是找到模式。
关于你关于GNU grep
的问题。我没有使用Homebrew,但根据此grep formula,它默认安装了g
前缀。尝试:ggrep
。