
Ich verwende Ubuntu 16.04
Versuchen:
grep '.*' file1
Ausgabe:
file nu-mber o-ne second string
Versuchen:grep '.+' file1
Ausgabe fehlt
Warum funktioniert Plus nicht?
Antwort1
Du musst sagengrep
Sie verwenden einen erweiterten regulären Ausdruck:
grep -E '.+' file1
Der StandardGrundlegende reguläre Ausdrücke(wie von grep
ohne verwendet -E
) Äquivalent desErweiterter regulärer Ausdruck +
Der Operator ist, \{1,\}
obwohl einige Implementierungen (wie die von GNU) \+
dies auch als Erweiterung erkennen (und Sie können immer verwenden ..*
).
(Beachten Sie, dass in diesem speziellen Fall grep -E .+
gleichbedeutend mit ist, grep -E .
da Sie nach Teilzeichenfolgen suchen, die dem regulären Ausdruck entsprechen, wenn Sie die -x
Option nicht verwenden. Auf vielen Systemen egrep
wird als gleichwertiger Befehl zu bereitgestellt grep -E
, aber alsGraeme weist darauf hindas istveraltet.)
Antwort2
Mit GNU grep (Standard unter Ubuntu) können Sie erweitertes Verhalten auch mit einem Backslash aktivieren. Beispiel:
grep '.\+' file1
Antwort3
Ich glaube, dass + ein erweitertes Metazeichen für reguläre Ausdrücke ist. Versuchen Sie es mit egrep
.