Question : Pouvez-vous expliquer comment utiliser les opérateurs OR, AND et NOT dans la commande Unix grep avec quelques exemples ?
Réponse : Dans grep, nous avons des options équivalentes aux opérateurs OR et NOT. Il n'y a pas d'opérateur grep AND. Mais, vous pouvez simuler ET en utilisant des modèles. Les exemples mentionnés ci-dessous vous aideront à comprendre comment utiliser OR, AND et NOT dans la commande Linux grep.
Le fichier employee.txt suivant est utilisé dans les exemples suivants.
$ 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
Vous saviez déjà que grep est extrêmement puissant d'après ces exemples de commandes grep.
Grep OU Opérateur
Utilisez l'une des 4 méthodes suivantes pour grep OU. Je préfère la méthode numéro 3 mentionnée ci-dessous pour l'opérateur grep OR.
1. Grep OU en utilisant \|
Si vous utilisez la commande grep sans aucune option, vous devez utiliser \| pour séparer plusieurs modèles pour la condition ou .
grep 'pattern1\|pattern2' filename
Par exemple, grep Tech ou Sales à partir du fichier employee.txt. Sans la barre oblique inverse devant le tuyau, ce qui suit ne fonctionnera pas.
$ 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 OU en utilisant -E
L'option grep -E est pour l'expression régulière étendue. Si vous utilisez la commande grep avec l'option -E, il vous suffit d'utiliser | pour séparer plusieurs modèles pour la condition ou .
grep -E 'pattern1|pattern2' filename
Par exemple, grep Tech ou Sales à partir du fichier employee.txt. Utilisez simplement le | pour séparer plusieurs motifs OR.
$ 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 OU Utiliser egrep
egrep est exactement le même que 'grep -E'. Donc, utilisez egrep (sans aucune option) et séparez plusieurs modèles pour la condition ou .
egrep 'pattern1|pattern2' filename
Par exemple, grep Tech ou Sales à partir du fichier employee.txt. Utilisez simplement le | pour séparer plusieurs motifs OR.
$ 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 OU Utilisation de grep -e
En utilisant l'option grep -e, vous ne pouvez transmettre qu'un seul paramètre. Utilisez plusieurs options -e dans une seule commande pour utiliser plusieurs modèles pour la condition ou.
grep -e pattern1 -e pattern2 filename
Par exemple, grep Tech ou Sales à partir du fichier employee.txt. Utilisez l'option multiple -e avec grep pour les multiples modèles OR.
$ 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 AND
5. Grep ET en utilisant -E 'motif1.*motif2'
Il n'y a pas d'opérateur ET dans grep. Mais, vous pouvez simuler ET en utilisant l'option grep -E.
grep -E 'pattern1.*pattern2' filename grep -E 'pattern1.*pattern2|pattern2.*pattern1' filename
L'exemple suivant va regrouper toutes les lignes contenant à la fois "Dev" et "Tech" (dans le même ordre).
$ grep -E 'Dev.*Tech' employee.txt 200 Jason Developer Technology $5,500
L'exemple suivant va regrouper toutes les lignes contenant à la fois "Manager" et "Sales" (dans n'importe quel ordre).
$ grep -E 'Manager.*Sales|Sales.*Manager' employee.txt
Remarque : L'utilisation d'expressions régulières dans grep est très puissante si vous savez comment l'utiliser efficacement.
6. Grep ET en utilisant la commande multiple grep
Vous pouvez également utiliser plusieurs commandes grep séparées par un tube pour simuler un scénario ET.
grep -E 'pattern1' filename | grep -E 'pattern2'
L'exemple suivant va regrouper toutes les lignes qui contiennent à la fois "Manager" et "Sales" dans la même ligne.
$ grep Manager employee.txt | grep Sales 100 Thomas Manager Sales $5,000 500 Randy Manager Sales $6,000
Grep PAS
7. Grep N'UTILISE PAS grep -v
En utilisant grep -v, vous pouvez simuler les conditions NOT. L'option -v est pour la correspondance inversée. c'est-à-dire qu'il correspond à toutes les lignes sauf le modèle donné.
grep -v 'pattern1' filename
Par exemple, affichez toutes les lignes sauf celles qui contiennent le mot-clé "Ventes".
$ grep -v Sales employee.txt 200 Jason Developer Technology $5,500 300 Raj Sysadmin Technology $7,000 400 Nisha Manager Marketing $9,500
Vous pouvez également combiner NOT avec un autre opérateur pour obtenir des combinaisons puissantes.
Par exemple, les éléments suivants afficheront Manager ou Developer (bot ignore Sales).
$ egrep 'Manager|Developer' employee.txt | grep -v Sales 200 Jason Developer Technology $5,500 400 Nisha Manager Marketing $9,500