Usando sinalizadores grep específicos da versão de comandos gerais do BSD em um Mac

0

Portanto, tenho usado um comando canalizado através de curl (no utilitário grep do GNU / Linux) para gerar uma string de senha aleatória para aumentar a segurança em algumas das minhas contas.

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

Estou tentando fazer esse comando funcionar em um Mac, e vendo que o Mac tem o BSD General Utilities sendo uma base Unix, as flags são diferentes. Eu referenciei a página do manual do grep para o utilitário de comandos gerais do BSD e encontrei alguns sinalizadores que pareceram que funcionariam, mas não consigo fazer com que ele analise a página corretamente. Se alguém puder me apontar na direção certa, ou me informar o que está perdendo, agradeceria.

Tenho a sensação de que está bem na frente do meu rosto.

A bandeira -e pareceu um ajuste justo, mas também não está funcionando.

-e pattern, --regexp=pattern Specify a pattern used during the search of the input: an input line is selected if it matches any of the specified patterns. This option is most useful when multiple -e options are used to specify multiple patterns, or when a pattern begins with a dash ('-').

    
por shome_slice 24.01.2016 / 03:27

1 resposta

0

-o (apenas imprime a parte correspondente da linha) é o mesmo no BSD e no GNU grep.
-P (use expressões regulares compatíveis com Perl, também conhecido como "PCRE") é específico para o GNU grep .

Felizmente, sua expressão regular de exemplo não usa nenhuma sintaxe específica do PCRE. Mas também não está em conformidade com a sintaxe clássica do Unix RE. Precisa de expressões regulares "estendidas" (EREs). Você pode obter isso no BSD grep adicionando -E ou chamando egrep em vez de grep .

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

Se você tem outras REs que realmente requerem PCRE, você sempre pode instalar o GNU grep (e, se você quiser, a grande maioria dos seus outros pacotes de software de código aberto favoritos) através de gerenciadores de pacotes como Homebrew, MacPorts ou Fink.

    
por 24.01.2016 / 04:19

Tags