Utilizzo di flag grep specifici dalla versione dei comandi generali di BSD su un Mac


0

Quindi ho usato un comando inoltrato tramite curl (sull'utility grep di GNU / Linux) per generare una stringa di password casuale per rafforzare la sicurezza su alcuni dei miei account.

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

Sto cercando di far funzionare questo comando su un Mac, e visto che Mac ha le Utilità Generali BSD come base Unix, le bandiere sono diverse. Ho fatto riferimento alla pagina man di grep per l'utilità dei comandi generali di BSD e ho trovato alcuni flag che sembravano funzionare, ma non riesco a farla analizzare correttamente. Se qualcuno può indicarmi la giusta direzione o farmi sapere cosa mi manca, lo apprezzerei.

Ho la sensazione che sia proprio davanti alla mia faccia.

La -ebandiera sembrava una scelta giusta, ma non funziona neanche.

-e pattern, --regexp=pattern Specificare un modello utilizzato durante la ricerca dell'input: viene selezionata una linea di input se corrisponde a uno dei pattern specificati. Questa opzione è particolarmente utile quando vengono utilizzate più opzioni -e per specificare più motivi o quando un motivo inizia con un trattino ('-').

Risposte:


0

-o(stampa solo la parte corrispondente della linea) è lo stesso su BSD e GNU grep.
-P(usa espressioni regolari compatibili con Perl, alias "PCRE") è specifico per GNU grep.

Fortunatamente, l'espressione regolare di esempio non utilizza alcuna sintassi specifica per PCRE. Ma non è nemmeno conforme alla sintassi classica di Unix RE. Ha bisogno di espressioni regolari "estese" (ERE). Puoi ottenerlo su BSD grep aggiungendo -Eo chiamando egrepinvece di grep.

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

Se hai altri RE che richiedono veramente PCRE, puoi sempre installare GNU grep (e, se vuoi, la stragrande maggioranza dei tuoi altri pacchetti software open source preferiti) tramite gestori di pacchetti come Homebrew, MacPorts o Fink.


Grazie mille per la risposta, e ha molto senso.
shome_slice,

@shome_slice Se la mia soluzione ha funzionato per te, puoi fare clic sul segno di spunta accanto alla mia risposta per contrassegnarla come "accettata", quindi le persone sanno che questa domanda è stata risolta.
Spiff
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.