Antworten:
Mit Standard- grep
Syntax:
grep '[>|]'
oder
grep -e '>' -e '|'
oder
grep '>
|'
oder
grep -E '>|\|'
Wenn Sie GNU grep verwenden, können Sie dies mit dem Operator oder ( |
) tun , dem ein Backslash vorangestellt werden soll \
. Um also Zeilen zu finden, die entweder eine Pipe oder ein Größer-als-Zeichen enthalten, schließen Sie sie wörtlich mit dem Operator oder ein :
grep '|\|>' infile
Ausgabe:
|this is test
where is >
+
, ?
) ist syntaktischer Zucker für \{1,\}
und \{0,1\}
. (Auf der anderen Seite verlieren EREs Rückverweise ( \(.\)\1
), die nur eine BRE-Funktion sind)
Verwenden des Klammerausdrucks, um eines der gewünschten Zeichen zu finden:
grep "[|>]" infile
Ausgabe:
|this is test
where is >
-i
oder -E
hier.
Der richtige Weg, dies zu erreichen, ist die Verwendung des von POSIX angegebenen Flags -e. Z.B:
grep -e '>\||' infile
grep -e '>' -e '|' infile
funktioniert auch.
-e
wird von POSIX angegeben, ist aber hier nicht nützlich. \|
wird von POSIX nicht angegeben.
\|
kein Standard istBRE
Operator, wenn es mit der GNU arbeitet ,grep
die das istgrep
bei den meisten anderen Betriebssystemen um einen Linux - Kernel integriert.