Ich habe den folgenden Befehl+REGEX verwendet, um alle Dateien aufzulisten, die Kartennummern in einem Dateisatz enthalten.
grep -r -l -e '[3-6]\d{3}([\ \-]?)\d{4}([\ \-]?)\d{4}([\ \-]?)\d{3,4}' *
Ich habe diesen REGEX in einer anderen Anwendung getestet und er war erfolgreich.
Antwort1
Einfaches Grep verwendet einfache reguläre Ausdrücke. Ihr regulärer Ausdruck verwendet -d
und ?
und , {m,n}
die nicht erkannt werden.
Sie möchten grep -E
, aber das kann nicht erkennen \d
. Wenn nicht ändern Sie es in[0-9]
grep -Erle '[3-6][0-9]{3}([ -]?)[0-9]{4}([ -]?)[0-9]{4}([ -]?)[0-9]{3,4}' *
Oder verwenden Sie grep -P
perl-kompatible reguläre Ausdrücke
Referenz:https://www.gnu.org/software/gnulib/manual/html_node/Regular-expression-syntaxes.html