Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos BSD grep返回不正确的结果_Macos_Bash_Grep_Gnu_Bsd - Fatal编程技术网

Macos BSD grep返回不正确的结果

Macos BSD grep返回不正确的结果,macos,bash,grep,gnu,bsd,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。我似乎不能将它用

在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更新为最新版本,因此我相当肯定这不是我的问题的根源

另一方面,对于grep使用Perl替代方案不是一个选项,这是一个家庭作业,其中一个条件是不使用Perl

有人能解决这个问题吗?要么用BSD解决问题,要么用安装的自制GNU grep解决问题。
干杯。

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


关于您关于GNU
grep
的问题。我不使用自制软件,但根据这一点,默认情况下它是以
g
前缀安装的。试试:
ggrep

谢谢你的回复。ggrep返回“未找到命令”。我尝试过的选项之一是:。他将一个符号链接到新安装的grep,但是/usr/bin/ggrep中的“操作是不允许的”。我已尝试链接到/usr/local/bin/ggrep,但“未找到命令”仍然存在..是的,指向
/usr/local/bin/ggrep的符号链接有效。当我添加别名
alias grep=“ggrep”
并执行
grep--version
时,我得到
-bash:ggrep:command not found
它在路径中,但不在第一个位置
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin
第一个返回:
lrwxr-xr-x 1 Wes admin 37 Oct 16 13:14/usr/local/bin/ggrep->/usr/local/ceral/grep/2.21/bin/ggrep
,第二个返回:
-bash:/usr/local/bin/ggrep:没有这样的文件或目录
。自制安装的文件似乎有问题,请尝试:
ls-la/usr/local/cillar/grep/2.21/bin/ggrep