-o
(только печатать совпадающую часть строки) одинаково как на BSD, так и на GNU grep.
-P
(используйте Perl-совместимые регулярные выражения, также называемые «PCRE») специфично для GNU grep.
К счастью, ваше примерное регулярное выражение не использует специфичный для PCRE синтаксис. Но он также не соответствует классическому синтаксису Unix RE. Требуются «расширенные» регулярные выражения (ERE). Вы можете получить это на grep BSD, добавив -E
или позвонив egrep
вместо grep
.
curl -s https://www.grc.com/passwords.htm | grep -oE '[a-zA-Z0-9]' | tail -n1 | cut -c1-63
Если у вас есть другие RE, которые действительно требуют PCRE, вы всегда можете установить GNU grep (и, если хотите, подавляющее большинство любых других ваших любимых пакетов программного обеспечения с открытым исходным кодом) через менеджеры пакетов, такие как Homebrew, MacPorts или Fink.