Antworten:
Mit Standard- grepSyntax:
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 >
-ioder -Ehier.
Der richtige Weg, dies zu erreichen, ist die Verwendung des von POSIX angegebenen Flags -e. Z.B:
grep -e '>\||' infile
grep -e '>' -e '|' infilefunktioniert auch.
-ewird von POSIX angegeben, ist aber hier nicht nützlich. \|wird von POSIX nicht angegeben.
\|kein Standard istBREOperator, wenn es mit der GNU arbeitet ,grepdie das istgrepbei den meisten anderen Betriebssystemen um einen Linux - Kernel integriert.