„+“ in der Grep-Regex-Syntax funktioniert nicht

„+“ in der Grep-Regex-Syntax funktioniert nicht

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 sagengrepSie verwenden einen erweiterten regulären Ausdruck:

grep -E '.+' file1

Der StandardGrundlegende reguläre Ausdrücke(wie von grepohne 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 -xOption nicht verwenden. Auf vielen Systemen egrepwird 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.

verwandte Informationen