Ich versuche 0.49
mit dem Befehl nach einer Zeichenfolge (mit Punkt) zu suchen
grep -r "0.49" *
Aber was passiert ist , dass ich auch unerwünschte Ergebnisse zu erzielen , die die Zeichenfolge enthält wie 0449
, 0949
etc ,. Die Sache ist Linux, das Punkt (.) Als ein beliebiges Zeichen betrachtet und alle Ergebnisse hervorbringt. Aber ich möchte das Ergebnis nur für "0,49" erhalten.
\\.
es funktionierte. Ich benutze zsh.\\.
für Bash verwenden oder verwenden"\."
, um es aus der Shell zu entkommen.grep -F -r '0.49' *
behandelt 0,49 als "feste" Zeichenfolge anstelle eines regulären Ausdrucks. Dadurch.
verliert es seine besondere Bedeutung.quelle
Sie müssen dem
.
as entkommen"0\.49"
.A
.
ist ein Regex-Metazeichen, das mit jedem Zeichen übereinstimmt (außer Zeilenumbruch). Um einer wörtlichen Periode zu entsprechen, müssen Sie ihr entkommen.quelle
Entkomme einfach dem
.
grep -r "0\.49"
quelle
Sie können auch "[.]"
quelle
Escape-Punkt. Beispielbefehl wird sein.
quelle
Sie können den Punkt und andere Sonderzeichen mit \ maskieren
z.B. grep -r "0 \ .49"
quelle
\.
umgeben von Anführungszeichen, ist notwendig, damit es funktioniert.Es gibt hier so viele Antworten, die darauf hindeuten, dem Punkt zu entkommen,
\.
aber ich bin immer wieder auf dieses Problem gestoßen:\.
gibt mir das gleiche Ergebnis wie.
Diese beiden Ausdrücke funktionieren jedoch für mich:
Und:
Ich verwende eine "normale" Bash-Shell unter Ubuntu und Archlinux.
quelle
grep '\.'
odergrep \\.
(Ich würde das erstere dringend empfehlen. Doppelte Anführungszeichen funktionieren auch wie in der ursprünglichen Frage, aber einfache Anführungszeichen sind einfacher zu verstehen und zu verwenden. Bei doppelten Anführungszeichen müssten Sie beispielsweise in einigen Szenarien den Backslash noch verdoppeln ).Sie können auch mit der Option - suchen, die im Grunde alle Sonderzeichen ignoriert und von grep nicht interpretiert wird.
quelle