GNU/Linux >> Tutoriels Linux >  >> Linux

Le didacticiel de la commande Grep avec des exemples pour les débutants

Dans ce didacticiel, nous allons en savoir plus sur "grep" commande. Grep signifie G global r e régulier xpression p imprimer. Comme son nom l'indique, Grep est utilisé pour rechercher des fichiers texte avec des expressions régulières (brièvement regex ). Il imprime les lignes correspondant au motif donné dans un fichier texte. Si aucun fichier n'est donné, 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 une compatibilité descendante. Au lieu d'utiliser "grep -E" et "grep -F", vous pouvez utiliser respectivement "egrp" et "fgrep". Sans plus tarder, commençons.

Exemples de commandes Grep

J'ai un fichier nommé file.txt avec quelques mots au hasard. Jetons un coup d'œil au fichier.txt :

$ cat file.txt
ostechnix
Ostechnix
o$technix
linux
linus
unix
technology
hello world
HELLO world

Pour 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 fichier.txt. Pour ce faire, je lance :

$ grep nix file.txt

Exemple de sortie :

ostechnix
Ostechnix
o$technix
unix

Comme vous le voyez dans la sortie 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 -n drapeau pour afficher les numéros de ligne dans la sortie :

$ grep -n nix file.txt

Exemple de sortie :

1:ostechnix
2:Ostechnix
3:o$technix
6:unix

Cela 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" , il n'affichera pas les lignes contenant des lettres majuscules, c'est-à-dire Os.

Vérifiez l'exemple suivant.

$ grep os file.txt 
ostechnix

Mais, j'ai un autre mot nommé "Ostechnix" dans file.txt, mais grep ne l'a pas listé.

Si vous souhaitez toutefois ignorer la casse, vous pouvez utiliser "-i" drapeau comme ci-dessous.

$ grep -i os file.txt 
ostechnix
Ostechn1x
$ grep -i 'hello world' file.txt 
hello world
HELLO world

Maintenant, grep ne s'est pas soucié 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 une sortie d'une commande vers grep. Regardez l'exemple suivant.

$ cat file.txt | grep os
ostechnix

Maintenant, voyez ce que nous avons. La sortie du 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 des caractères spéciaux ou des expressions régulières dans grep.

  • ^ - recherche en début de ligne.
  • $ - recherche au bout de la ligne.
  • . - Rechercher 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
technology

Mais que se passe-t-il si vous vouliez simplement rechercher les lignes qui ne commencent que par le mot "tech". Vous ne voulez pas afficher tous les mots qui contiennent 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 deviennent utiles.

Pour rechercher les mots correspondant au modèle "tech" en début de ligne dans un fichier, exécutez :

$ grep ^tech file.txt
technology

De 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
unix

En outre, vous pouvez rechercher les mots contenant n'importe quel caractère en utilisant . (point).

Par exemple, recherchons n'importe quel mot qui a "n" dans le fichier.

$ grep .n file.txt
ostechnix
Ostechnix
o$technix
linux
linus
unix
technology

Vous devriez maintenant avoir une compréhension de base de l'utilisation de grep. Continuons et apprenons les deux autres variantes, à savoir egrep et fgrep .

Exemples de commandes Egrep

egrep signifie e grep étendu . C'est similaire à "grep -E" commande. Il fera tout ce que grep fera. Cependant, il fournit des fonctionnalités supplémentaires, telles que l'utilisation de regex 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
linus

Voir? 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 commençant 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
technology

Veuillez 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 de 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.txt

Ou,

$ egrep '^([l-u]|[L-U])' file.txt

Exemple de sortie :

ostechnix
Ostechnix
o$technix
linux
linus
unix
technology
HELLO world

Voir? Nous avons maintenant les mots qui commencent par la plage de caractères "l" à "u" (majuscules ou minuscules).

Exemples de commandes Fgrep

fgrep signifie f dernier 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 trouver les mots se terminant par "x" .

$ grep x$ file.txt
ostechnix
Ostechnix
o$technix
linux
unix

Exécutez maintenant la même commande avec fgrep.

$ fgrep x$ file.txt

Il 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.txt

Mais, on n'obtient 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 pas de caractères se terminant par "o" dans file.txt, nous n'obtenons rien.

Maintenant, exécutez la même commande avec fgrep.

$ fgrep o$ file.txt 
o$technix

Voir? C'est ici que nous utilisons la commande fgrep. Il ignore simplement le symbole du 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 --help

Il donnera toutes les options possibles. Ou consultez les pages de manuel.

$ man grep

Suggestion de lecture :

  • Apprenez à utiliser efficacement les pages de manuel
Étymologie de grep

Grep a été écrit du jour au lendemain par Ken Thompson , le même gars qui a écrit Unix. Mais pourquoi et comment a-t-il obtenu son nom ? 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 motifs correspondants sous GNU/Linux. Vous avez également appris comment Grep a obtenu son nom. J'espère que cela vous a été utile.


Linux
  1. Linux expand Tutoriel de commande pour les débutants (avec exemples)

  2. Tutoriel de commande de facteur Linux pour les débutants (avec exemples)

  3. Linux oui Tutoriel de commande pour les débutants (avec exemples)

  4. Le didacticiel de commande Numfmt avec des exemples pour les débutants

  5. Le didacticiel de commande de type avec des exemples pour les débutants

Le didacticiel de commande de pliage avec des exemples pour les débutants

Le didacticiel de commande df avec des exemples pour les débutants

Le didacticiel Top Command avec des exemples pour les débutants

Le didacticiel de la commande mktemp avec des exemples pour les débutants

Le didacticiel Uniq Command avec des exemples pour les débutants

Le didacticiel de commande fc avec des exemples pour les débutants