grep-Befehl gibt 0 zurück - alle Zeichen, die keine Ziffern sind, global abgleichen

grep-Befehl gibt 0 zurück - alle Zeichen, die keine Ziffern sind, global abgleichen

Ich möchte eine Datei nach allen Zeichenfolgen durchsuchen, die keine Ziffern enthalten. Dabei bin ich auf den folgenden regulären Ausdruck gestoßen.

\D*/g

Was wie gewünscht funktioniert, ist dieses Onlinetool:https://regex101.com/#pcre, aber wenn ich den folgenden Befehl ausführe:

grep -c "\D*/g" nonDistortResults.txt 

Es kommt zurück 0.

Die Datei ist wie folgt formatiert:

2573
kitchenDoor 2573
2573
2573
2573
2574
2574
2574
2574
kitchenDoor 2574
2574
2574
2575
2575
2575
2575
2575
kitchenDoor 2575
2576

Im obigen Beispiel würde ich also eine Rückgabe erwarten 3.

Antwort1

Sie müssen Ihr Muster wie folgt anpassen:

grep -c \D nonDistortResults.txt
  • Wir brauchen das Flag 'greedy' nicht, da grep bereits mit Zeilen arbeitet
  • Die Anführungszeichen sind hier nicht erforderlich
  • Der Stern kann eine beliebige Anzahl von Ergebnissen darstellen, einschließlich 0 (wenn Sie ihn verwenden, wird für jede Zeile „true“ zurückgegeben).

Wenn Sie einige reguläre Ausdrücke von Pearl (PCRE) erneut verwenden müssen, können Sie sich die Option -P von grep ansehen. Auf der Manualpage steht jedoch:

-P, --perl-regexp
Interpretiert PATTERN als regulären Perl-Ausdruck (PCRE, siehe unten). Dies ist höchst experimentell und grep -P kann vor nicht implementierten Funktionen warnen.

verwandte Informationen