Le didacticiel de commande Grep avec des exemples pour les débutants
Dans ce tutoriel, nous allons découvrir la commande "grep". Grep signifie Global regular expression print . Comme son nom l'indique, Grep est utilisé pour rechercher des fichiers texte avec des expressions régulières (en abrégé regex). Il imprime les lignes correspondant au motif donné dans un fichier texte. Si aucun fichier n'est donné, grep recherchera récursivement le modèle donné dans les fichiers du répertoire courant. Grep a deux variantes, à savoir egrep et fgrep. Ces variantes sont obsolètes mais sont fournies à des fins de compatibilité descendante. Au lieu d'utiliser "grep -E" et "grep -F", vous pouvez utiliser respectivement "egrep" et "fgrep". Sans plus tarder, commençons.
Exemples de commandes Grep
J'ai un fichier nommé file.txt avec quelques mots aléatoires. Jetons un coup d'œil au fichier.txt :
$ cat file.txt
ostechnix
Ostechnix
o$technix
linux
linus
unix
technology
hello world
HELLO worldPour commencer la recherche, tapez simplement grep suivi de ce que vous recherchez et d'où vous recherchez. Par exemple, je vais chercher la chaîne "nix" dans le fichier.txt. Pour ce faire, je lance :
grep nix file.txtExemple de sortie :
ostechnix
Ostechnix
o$technix
unixComme vous le voyez dans le résultat ci-dessus, nous avons deux mots contenant le modèle correspondant « nix ». Si la chaîne de recherche contient deux mots, mentionnez-les entre guillemets simples comme ci-dessous.
$ grep 'hello world' file.txt
hello world
Vous pouvez également utiliser l'indicateur -n pour afficher les numéros de ligne dans la sortie :
grep -n nix file.txtExemple de sortie :
1:ostechnix
2:Ostechnix
3:o$technix
6:unixCela peut être utile lorsque vous travaillez avec un code très long.
Veuillez noter que grep est sensible à la casse. Par exemple, lorsque vous recherchez "os", les lignes contenant des lettres majuscules, par exemple Os, ne seront pas affichées.
Vérifiez l’exemple suivant.
$ grep os file.txt
ostechnixMais j'ai un autre mot nommé "Ostechnix" dans le fichier.txt, mais grep ne l'a pas répertorié.
Si vous souhaitez toutefois ignorer la casse, vous pouvez utiliser l'indicateur "-i" comme ci-dessous.
$ grep -i os file.txt
ostechnix
Ostechn1x$ grep -i 'hello world' file.txt
hello world
HELLO worldMaintenant, grep ne se souciait pas de la casse et nous avons obtenu les mots contenant à la fois des lettres majuscules et minuscules dans le résultat.
Nous pouvons également diriger la sortie d’une commande vers grep. Jetez un œil à l’exemple suivant.
$ cat file.txt | grep os
ostechnixMaintenant, voyez ce que nous avons. La sortie du fichier.txt est redirigée vers grep et les mots contenant les lettres "os" dans le fichier.txt ont été affichés.
Nous pouvons également utiliser des caractères spéciaux ou des expressions régulières dans grep.
- ^ - recherche au début de la ligne.
- $ - recherche à la fin de la ligne.
- . - Recherchez n'importe quel caractère.
Laissez-moi vous montrer un exemple afin que vous puissiez comprendre où et comment utiliser ces caractères spéciaux.
Vous le savez déjà, nous pouvons rechercher les mots qui contiennent la chaîne "tech" comme ci-dessous.
$ grep tech file.txt
ostechnix
Ostechnix
o$technix
technologyMais que se passe-t-il si vous souhaitez simplement rechercher les lignes qui commencent uniquement par le mot « tech ». Vous ne souhaitez pas afficher tous les mots contenant la chaîne, mais uniquement les mots comportant la chaîne « tech » au début. C'est également possible. C'est là que les caractères spéciaux s'avèrent utiles.
Pour rechercher les mots qui correspondent au modèle « tech » au début de la ligne dans un fichier, exécutez :
$ grep ^tech file.txt
technologyDe même, nous pouvons rechercher les mots qui se terminent par une ou plusieurs lettres particulières, par exemple "x", comme ci-dessous.
$ grep x$ file.txt
ostechnix
Ostechnix
o$technix
linux
unixDe plus, vous pouvez trouver les mots contenant n'importe quel caractère en utilisant . (point).
Par exemple, recherchons n'importe quel mot contenant "n" dans le fichier.
$ grep .n file.txt
ostechnix
Ostechnix
o$technix
linux
linus
unix
technologyVous devriez maintenant avoir une compréhension de base de l'utilisation de grep. Allons de l'avant et apprenons les deux autres variantes, à savoir egrep et fgrep.
Exemples de commandes Egrep
egrep signifie e grep étendu. Elle est similaire à la commande "grep -E". Il fera tout ce que grep fera. Cependant, elle fournit des fonctionnalités supplémentaires, telles que l'utilisation d'expressions régulières compliquées, par rapport à la commande grep normale.
Par exemple, nous pouvons rechercher tous les mots commençant par "l" ou "o".
N'oubliez pas que nous utilisons le symbole caret (^) pour rechercher des mots en début de ligne. Par conséquent, notre commande pour la requête ci-dessus sera :
$ egrep '^(l|o)' file.txt
ostechnix
o$technix
linux
linusVoir? Nous avons tous les mots qui commencent par « l » ou « o ». Veuillez noter que la commande grep normale ne peut pas faire cela.
De même, nous pouvons rechercher les lignes commençant par n’importe quelle plage de caractères comprise entre « l » et « u ». Cela signifie que nous obtiendrons les lignes qui commencent par l, m, n, o, p, q, r, s, t et u. Tout le reste sera omis du résultat.
$ egrep '^[l-u]' file.txt
ostechnix
o$technix
linux
linus
unix
technologyVeuillez noter que j'ai utilisé des crochets ([) pour rechercher la plage de mots. Étant donné que grep est sensible à la casse, il ne trouvera pas les lignes commençant par des lettres majuscules dans la plage donnée.
Pour afficher toutes les lignes commençant par des lettres majuscules et minuscules, nous utilisons :
egrep '^[l-u]|[L-U]' file.txtOu,
egrep '^([l-u]|[L-U])' file.txtExemple de sortie :
ostechnix
Ostechnix
o$technix
linux
linus
unix
technology
HELLO worldVoir? Nous avons maintenant les mots qui commencent par la plage de caractères « l » à « u » (majuscules ou minuscules).
Exemples de commandes Fgrep
fgrep signifie rapideast grep. C'est similaire à "grep -F". fgrep ne peut pas reconnaître les expressions régulières ou les caractères spéciaux. fgrep peut être utilisé là où vous souhaitez que les expressions régulières soient évaluées.
Par exemple, nous utilisons la commande suivante pour rechercher les mots se terminant par "x".
$ grep x$ file.txt
ostechnix
Ostechnix
o$technix
linux
unixExécutez maintenant la même commande avec fgrep.
fgrep x$ file.txtIl n'affichera rien car il n'a pas pu évaluer les caractères spéciaux.
Voyons maintenant un autre exemple. Pour rechercher les mots qui correspondent à la chaîne "o$" avec la commande grep, nous faisons :
grep o$ file.txtMais nous n’obtenons rien, pourquoi ? Parce que, selon la commande ci-dessus, nous utilisons le symbole dollar ($) pour trouver les mots qui se terminent par « o ». Puisqu'il n'y avait aucun caractère se terminant par "o" dans le fichier.txt, nous n'obtenons rien.
Maintenant, exécutez la même commande avec fgrep.
$ fgrep o$ file.txt
o$technixVoir? C'est ici que nous utilisons la commande fgrep. Il ignore simplement le symbole dollar (le caractère spécial, bien sûr) et affiche le mot qui contient la chaîne « o$».
Pour plus de détails sur grep, tapez :
grep --helpIl donnera toutes les options possibles. Ou reportez-vous aux pages de manuel.
man grepLecture suggérée :
- Apprenez à utiliser efficacement les pages de manuel
Étymologie de grep
Grep a été écrit du jour au lendemain par Ken Thompson, le même auteur d'Unix. Mais pourquoi et comment tire-t-il son nom ? Le Le professeur Brian Kernighan explique l'étymologie de grep dans cette vidéo.
Et c'est tout. Grep est l'une des commandes importantes que vous devez apprendre à fond.
Vous savez maintenant ce qu'est grep et comment l'utiliser pour rechercher des fichiers texte avec des modèles correspondants dans GNU/Linux. Vous avez également appris comment Grep tire son nom. J'espère que cela a été utile.