Поэтому я использовал команду, переданную через curl (в утилите grep GNU/Linux), чтобы сгенерировать случайную строку пароля для усиления безопасности некоторых моих учетных записей.

curl -s https://www.grc.com/passwords.htm | grep -oP '[a-zA-Z0-9]{63}' | tail -n1 | cut -c1-63

Я пытаюсь заставить эту команду работать на Mac, и вижу, что Mac имеет общие утилиты BSD, являющиеся основой Unix, флаги разные. Я ссылался на справочную страницу grep для утилиты общих команд BSD и наткнулся на несколько флагов, которые, по-видимому, будут работать, но я не могу заставить его правильно проанализировать страницу. Если кто-то может указать мне правильное направление или сообщить, что мне не хватает, я был бы признателен.

Я чувствую, что это прямо перед моим лицом.

Флаг -e казался праведным, но он тоже не работает.

-e pattern, --regexp=pattern Указать шаблон, используемый при поиске входных данных: строка ввода выбирается, если она соответствует любому из указанных шаблонов. Этот параметр наиболее полезен, когда несколько опций -e используются для указания нескольких шаблонов или когда шаблон начинается с тире ('-').

1 ответ1

0

-o (вывести только совпадающую часть строки) одинаково как для BSD, так и для GNU grep.
-P (использовать Perl-совместимые регулярные выражения, также называемые "PCRE") относится к GNU grep.

К счастью, ваше примерное регулярное выражение не использует специфичный для PCRE синтаксис. Но он также не соответствует классическому синтаксису Unix RE. Требуются "расширенные" регулярные выражения (ERE). Вы можете получить это в BSD grep, добавив -E или вызвав egrep вместо grep .

curl -s https://www.grc.com/passwords.htm | grep -oE '[a-zA-Z0-9]{63}' | tail -n1 | cut -c1-63

Если у вас есть другие RE, которые действительно требуют PCRE, вы всегда можете установить GNU grep (и, если хотите, подавляющее большинство любых других ваших любимых пакетов программного обеспечения с открытым исходным кодом) через менеджеры пакетов, такие как Homebrew, MacPorts или Fink.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .