При выполнении grep в OSX мои результаты неверны. Я ищу смещение подстроки с несколькими совпадениями, используя -aob. 'a', указывающий, что я использую строки, 'o', показывая только результат, и 'b' для смещения байта.BSD grep возвращает неверные результаты
echo "ABDABCABC" | grep -aob "ABC"
С выходом:
0:ABC
ABC
Когда на самом деле, на выходе должно быть:
3:ABC
6:ABC
По умолчанию OSX использует BSD Grep, который, кажется, есть эта проблема. Я использую El Capitan, но другие пользователи Mac с более ранними версиями работают одинаково. Я попытался установить GNU grep через homebrew. Я не могу использовать его для grep, хотя grep -V возвращает, что он использует BSD. Сейчас у MacPorts есть некоторые проблемы, поэтому я не могу использовать это для установки.
Я также обновил bash до последней версии, поэтому я абсолютно уверен, что это не является источником моих проблем.
В другом примечании, использующем Perl альтернативы для grep, это не вариант, это для домашнего задания, и одно из условий - не использовать Perl.
У кого-нибудь есть решение для этого? Либо исправить проблему с BSD, либо использовать установленный homebrew GNU grep. Cheers.
Спасибо за ваш ответ. ggrep возвращает «Команда не найдена». Один из вариантов, который я пробовал: http://www.heystephenwood.com/2013/09/install-gnu-grep-on-mac-osx.html. Он создает символическую ссылку на недавно установленный grep, но «операция не разрешена» в/usr/bin/ggrep. Я попытался связать с/usr/local/bin/ggrep, но «Команда не найдена» остается. – Holderdash
Да, символическая ссылка на '/ usr/local/bin/ggrep' работает. Когда я добавляю псевдоним 'alias grep =" ggrep "' и do 'grep -version', я получаю' -bash: ggrep: command not found' – Holderdash
Он находится в пути, но не в первой позиции '/ usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin' – Holderdash