Tutoriel sur la commande Grep sous Linux avec des exemples pour les débutants
Dans ce tutoriel, nous allons apprendre l'utilisation de la commande grep avec des exemples sous Linux. 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 affiche les lignes correspondant au motif donné dans un fichier texte. Si aucun fichier n'est fourni, grep recherchera récursivement le motif donné dans les fichiers du répertoire courant. Grep a deux variantes, à savoir egrep et fgrep. Ces variantes sont obsolètes mais sont fournies pour la compatibilité avec les versions précédentes. Plutôt que d'utiliser "grep -E" et "grep -F", vous pouvez utiliser respectivement "egrep" et "fgrep". Sans plus tarder, commençons.
Exemples de commande Grep
J'ai un fichier nommé file.txt avec quelques mots aléatoires. Regardons le fichier file.txt :
$ cat file.txt
ostechnix
Ostechnix
o$technix
linux
linus
unix
technology
hello world
HELLO worldPour commencer la recherche, il suffit de taper grep suivi de ce que vous recherchez et de l'endroit où vous effectuez la recherche. Par exemple, je vais chercher la chaîne "nix" dans file.txt. Pour ce faire, je lance :
$ grep nix file.txtExemple de sortie :
ostechnix
Ostechnix
o$technix
unixComme vous le voyez dans la sortie ci-dessus, nous avons obtenu deux mots qui contiennent le motif 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 worldVous pouvez également utiliser le drapeau -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 vraiment long.
Veuillez noter que grep est sensible à la casse. Par exemple, lorsque vous recherchez "os", il n'affichera pas les lignes contenant des lettres majuscules, comme Os.
Vérifiez l'exemple suivant.
$ grep os file.txt
ostechnixMais, j'ai un autre mot nommé "Ostechnix" dans file.txt, mais grep ne l'a pas listé.
Cependant, si vous voulez ignorer la distinction entre majuscules et minuscules, vous pouvez utiliser le drapeau "-i" comme ci-dessous.
$ grep -i os file.txt
ostechnix
Ostechnix$ grep -i 'hello world' file.txt
hello world
HELLO worldMaintenant, grep ne se souciait pas de la casse et nous avons obtenu les mots qui contiennent à 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
ostechnixVoyons maintenant ce que nous avons. La sortie du fichier file.txt est redirigée vers grep et les mots contenant les lettres "os" dans file.txt ont été affichés.
Nous pouvons également utiliser certains caractères spéciaux ou 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 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 faire si vous vouliez simplement rechercher les lignes qui commencent uniquement par le mot « tech ». Vous ne voulez pas afficher tous les mots contenant la chaîne, mais seulement les mots qui ont la chaîne « tech » au début. C'est également possible. C'est là que les caractères spéciaux sont 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 qui contiennent n'importe quel caractère en utilisant . (point).
Par exemple, cherchons un mot qui contient "n" dans le fichier.
$ grep .n file.txt
ostechnix
Ostechnix
o$technix
linux
linus
unix
technologyComprendre les indicateurs de contexte de Grep
Parfois, vous pouvez vouloir voir non seulement la ligne correspondante mais aussi les lignes autour. C'est là que les options de contexte entrent en jeu : --context, -A, -B et -C. En utilisant les options de contexte de grep, vous pouvez facilement voir les informations importantes environnantes. Pour plus de détails, référez-vous au guide suivant :
- Comment utiliser la commande Grep de Linux avec des indicateurs de contexte
Vous devriez maintenant avoir une compréhension de base de l'utilisation de grep. Passons à l'apprentissage des deux autres variantes, à savoir egrep et fgrep.
Exemples de commandes egrep
egrep signifie extended grep. Il est similaire à la commande "grep -E". Il fera tout ce que grep fait. Cependant, il offre quelques fonctionnalités supplémentaires, comme l'utilisation de regex compliquées, contrairement à la commande grep normale qui ne le fait pas par défaut.
Par exemple, nous pouvons rechercher tous les mots qui commencent soit par « l » soit par « o ».
N'oubliez pas que nous utilisons le symbole circonflexe (^) pour rechercher des mots au début d'une ligne. Par conséquent, notre commande pour la requête ci-dessus sera :
$ egrep '^(l|o)' file.txt
ostechnix
o$technix
linux
linusVous voyez ? Nous avons tous les mots qui commencent soit par « l », soit par « o ». Veuillez noter que la commande grep normale ne peut pas faire cela.
De même, nous pouvons rechercher les lignes qui commencent par n'importe quel caractère compris 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é crochet carré ([) pour rechercher la plage de mots. Comme grep est sensible à la casse, il ne trouvera pas les lignes qui commencent par des lettres majuscules dans la plage donnée.
Pour afficher toutes les lignes qui commencent 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
Vous voyez ? Maintenant, nous avons les mots qui commencent par le caractère allant de « l » à « u » (majuscule ou minuscule).
Exemples de commande fgrep
fgrep signifie fast grep. Il 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é lorsque vous voulez que les expressions régulières soient évaluées.
Par exemple, nous utilisons la commande suivante pour trouver 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 on n’a rien, pourquoi ? Parce que, comme indiqué précédemment, nous utilisons le symbole dollar ($) pour trouver les mots qui se terminent par « o ». Comme il n’y avait pas de caractères qui se terminent par un « o » dans file.txt, on n’a rien.
Maintenant, exécutez la même commande avec fgrep.
$ fgrep o$ file.txt
o$technixTu vois ? C'est ici que nous utilisons la commande fgrep. Elle 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, consultez les pages de manuel.
$ man grepLecture suggérée :
- Apprenez à utiliser les pages de manuel efficacement
Étymologie de grep
Grep a été écrit en une nuit par Ken Thompson, le même gars qui a écrit Unix. Mais pourquoi et comment a-t-il obtenu son nom ? 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 devriez apprendre à fond.
Vous savez maintenant ce qu'est grep et comment l'utiliser pour rechercher dans des fichiers texte des motifs correspondants sous GNU/Linux. Vous avez également appris comment grep a obtenu son nom. J'espère que cela a été utile.
Lecture Connexe:
- Trouver des fichiers contenant un texte spécifique en utilisant Grep et Ripgrep sous Linux
- Comment rechercher à l'intérieur des fichiers sous Linux en utilisant Grep, Find et Ripgrep