Verwenden bestimmter grep-Flags aus der BSD-Version für allgemeine Befehle auf einem Mac

724
shome_slice

Daher habe ich einen Befehl verwendet, der durch curl geleitet wird (im GNU / Linux-Dienstprogramm grep), um eine zufällige Kennwortzeichenfolge zu generieren, um die Sicherheit einiger meiner Konten zu verbessern.

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

Ich versuche, diesen Befehl auf einem Mac zum Laufen zu bringen, und da Macs BSD General Utilities als Unix-Basis verwendet, unterscheiden sich die Flags. Ich habe auf die grep-Manpage für das BSD General Commands Utility verwiesen und bin auf ein paar Flaggen gestoßen, die scheinbar funktionieren würden, aber ich kann die Seite nicht richtig analysieren. Wenn jemand mich in die richtige Richtung weisen kann oder mich wissen lässt, was mir fehlt, würde ich es schätzen.

Ich habe das Gefühl, es ist direkt vor meinem Gesicht.

Die -eFlagge wirkte aufrichtig, aber sie funktioniert auch nicht.

-e pattern, --regexp=pattern Geben Sie ein Muster an, das während der Suche nach der Eingabe verwendet wird: Eine Eingabezeile wird ausgewählt, wenn sie mit einem der angegebenen Muster übereinstimmt. Diese Option ist am nützlichsten, wenn mehrere -e-Optionen verwendet werden, um mehrere Muster anzugeben, oder wenn ein Muster mit einem Bindestrich ('-') beginnt.

0

1 Antwort auf die Frage

0
Spiff

-o(nur den passenden Teil der Zeile drucken) ist auf BSD und GNU grep gleich.
-P(Verwenden Sie Perl-kompatible reguläre Ausdrücke, auch "PCRE" genannt) ist spezifisch für GNU grep.

Glücklicherweise verwendet Ihr regulärer Beispielausdruck keine PCRE-spezifische Syntax. Es entspricht aber auch nicht der klassischen Unix-RE-Syntax. Es braucht "erweiterte" reguläre Ausdrücke (EREs). Sie können dies in BSD grep durch Hinzufügen -Eoder Anrufen egrepanstelle von erhalten grep.

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

Wenn Sie über andere REs verfügen, für die wirklich PCRE erforderlich ist, können Sie GNU grep (und, wenn Sie möchten, die überwiegende Mehrheit aller anderen beliebten Open-Source-Softwarepakete) über Paketmanager wie Homebrew, MacPorts oder Fink installieren.

Vielen Dank für die Antwort, und es macht viel Sinn. shome_slice vor 8 Jahren 0
@shome_slice Wenn meine Lösung für Sie funktioniert hat, können Sie auf das Kontrollkästchen neben meiner Antwort klicken, um sie als "akzeptiert" zu markieren, sodass die Benutzer wissen, dass diese Frage gelöst wurde. Spiff vor 8 Jahren 0