Frage: Können Sie anhand einiger Beispiele erklären, wie die Operatoren OR, AND und NOT im Unix-Befehl grep verwendet werden?
Antwort: In grep haben wir Optionen, die den Operatoren OR und NOT entsprechen. Es gibt keinen grep UND-Operator. Aber Sie können UND mit Mustern simulieren. Die unten aufgeführten Beispiele helfen Ihnen zu verstehen, wie OR, AND und NOT im Linux-Grep-Befehl verwendet werden.
Die folgende employee.txt-Datei wird in den folgenden Beispielen verwendet.
$ cat employee.txt 100 Thomas Manager Sales $5,000 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 400 Nisha Manager Marketing $9,500 500 Randy Manager Sales $6,000
Sie wussten bereits, dass grep extrem leistungsfähig ist, basierend auf diesen grep-Befehlsbeispielen.
Grep-ODER-Operator
Verwenden Sie eine der folgenden 4 Methoden für grep OR. Ich bevorzuge die unten erwähnte Methode Nummer 3 für den Operator grep OR.
1. Grep OR mit \|
Wenn Sie den Befehl grep ohne Option verwenden, müssen Sie \| verwenden um mehrere Muster für die Bedingung or zu trennen.
grep 'pattern1\|pattern2' filename
Grep beispielsweise entweder Tech oder Sales aus der Datei employee.txt. Ohne den Backslash vor dem Pipe funktioniert Folgendes nicht.
$ grep 'Tech\|Sales' employee.txt 100 Thomas Manager Sales $5,000 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 500 Randy Manager Sales $6,000
2. Grep ODER Verwendung von -E
Die Option grep -E ist für erweiterte reguläre Ausdrücke. Wenn Sie den Befehl grep mit der Option -E verwenden, müssen Sie nur | verwenden um mehrere Muster für die Bedingung or zu trennen.
grep -E 'pattern1|pattern2' filename
Grep beispielsweise entweder Tech oder Sales aus der Datei employee.txt. Verwenden Sie einfach das | um mehrere ODER-Muster zu trennen.
$ grep -E 'Tech|Sales' employee.txt 100 Thomas Manager Sales $5,000 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 500 Randy Manager Sales $6,000
3. Grep ODER Verwendung von egrep
egrep ist genau dasselbe wie „grep -E“. Verwenden Sie also egrep (ohne Option) und trennen Sie mehrere Muster für die Bedingung or.
egrep 'pattern1|pattern2' filename
Grep beispielsweise entweder Tech oder Sales aus der Datei employee.txt. Verwenden Sie einfach das | um mehrere ODER-Muster zu trennen.
$ egrep 'Tech|Sales' employee.txt 100 Thomas Manager Sales $5,000 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 500 Randy Manager Sales $6,000
4. Grep ODER Verwendung von grep -e
Mit der Option grep -e können Sie nur einen Parameter übergeben. Verwenden Sie mehrere Optionen -e in einem einzigen Befehl, um mehrere Muster für die Bedingung or zu verwenden.
grep -e pattern1 -e pattern2 filename
Grep beispielsweise entweder Tech oder Sales aus der Datei employee.txt. Verwenden Sie die Option multiple -e mit grep für die multiplen OR-Muster.
$ grep -e Tech -e Sales employee.txt 100 Thomas Manager Sales $5,000 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 500 Randy Manager Sales $6,000
Grep UND
5. Grep UND mit -E ‘pattern1.*pattern2’
In grep gibt es keinen UND-Operator. Sie können AND jedoch mit der Option grep -E simulieren.
grep -E 'pattern1.*pattern2' filename grep -E 'pattern1.*pattern2|pattern2.*pattern1' filename
Das folgende Beispiel sucht nach allen Zeilen, die sowohl „Dev“ als auch „Tech“ enthalten (in derselben Reihenfolge).
$ grep -E 'Dev.*Tech' employee.txt 200 Jason Developer Technology $5,500
Das folgende Beispiel sucht nach allen Zeilen, die sowohl „Manager“ als auch „Sales“ enthalten (in beliebiger Reihenfolge).
$ grep -E 'Manager.*Sales|Sales.*Manager' employee.txt
Hinweis: Die Verwendung regulärer Ausdrücke in grep ist sehr leistungsfähig, wenn Sie wissen, wie man sie effektiv einsetzt.
6. Grep UND Verwendung des Multiple-Grep-Befehls
Sie können auch mehrere durch Pipe getrennte grep-Befehle verwenden, um ein UND-Szenario zu simulieren.
grep -E 'pattern1' filename | grep -E 'pattern2'
Im folgenden Beispiel werden alle Zeilen erfasst, die sowohl „Manager“ als auch „Sales“ in derselben Zeile enthalten.
$ grep Manager employee.txt | grep Sales 100 Thomas Manager Sales $5,000 500 Randy Manager Sales $6,000
Griff NICHT
7. Grep benutzt NICHT grep -v
Mit grep -v können Sie die NOT-Bedingungen simulieren. Die Option -v ist für Invert-Match. d.h. es stimmt mit allen Zeilen außer dem angegebenen Muster überein.
grep -v 'pattern1' filename
Zeigen Sie beispielsweise alle Zeilen außer denen an, die das Schlüsselwort „Verkäufe“ enthalten.
$ grep -v Sales employee.txt 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 400 Nisha Manager Marketing $9,500
Sie können NOT auch mit anderen Operatoren kombinieren, um einige leistungsstarke Kombinationen zu erhalten.
Im Folgenden wird beispielsweise entweder Manager oder Entwickler angezeigt (Bot ignoriert Sales).
$ egrep 'Manager|Developer' employee.txt | grep -v Sales 200 Jason Developer Technology $5,500 400 Nisha Manager Marketing $9,500