grep

Commande Grep sous Linux

Commande Grep sous Linux
La commande Grep (global regular expression print) est l'utilitaire de ligne de commande Linux le plus puissant et le plus régulièrement utilisé. En utilisant Grep, vous pouvez rechercher des informations utiles en spécifiant un critère de recherche. Il recherche un modèle d'expression particulier dans un fichier spécifié. Lorsqu'il trouve une correspondance, il imprime toutes les lignes d'un fichier qui correspond au modèle spécifié. C'est pratique lorsque vous devez filtrer à travers de gros fichiers journaux.

Dans cet article, nous allons expliquer l'utilisation de l'utilitaire grep avec différents exemples. Nous utiliserons Debian 10 pour expliquer les commandes et méthodes mentionnées dans cet article.

Installation de Grep

Grep est installé dans la plupart des distributions Linux. Cependant, au cas où il manquerait à votre système, vous pouvez l'installer en utilisant la méthode suivante dans Terminal :

$ sudo apt-get install grep

Utiliser Grep

Voici la syntaxe de base de la commande grep. Il commence par grep suivi de quelques options et critères de recherche, puis se termine par le nom du fichier.

$ grep [options] MOTIF [FICHIER… ]

Rechercher des fichiers

Pour rechercher un nom de fichier dans un répertoire contenant une chaîne spécifique, vous pouvez utiliser grep de la manière suivante :

$ ls -l | grep -i "chaîne

Par exemple, pour rechercher un nom de fichier contenant une chaîne "test", la commande serait :

$ ls -l | grep -i test

Cette commande liste tous les fichiers qui contiennent la chaîne "test".

Rechercher une chaîne dans un fichier

Pour rechercher une chaîne dans un fichier particulier, vous pouvez utiliser la syntaxe de commande suivante :

$ grep "chaîne" nom de fichier

Par exemple, pour rechercher une chaîne "test” dans un fichier nommé fichiertest1, nous avons utilisé la commande suivante:

$ grep « employé » fichier de test1

La sortie ci-dessus a renvoyé la phrase du fichiertest1 qui contient la chaîne "employé".

Rechercher une chaîne dans plusieurs fichiers

Pour rechercher une chaîne dans plusieurs fichiers, vous pouvez utiliser la syntaxe de commande suivante :

$ grep "chaîne" nom_fichier1 nom_fichier2

Par exemple, pour rechercher une chaîne « employee » dans nos deux fichiers testfile1 et testfile2, nous avons utilisé la commande suivante :

$ grep « employé » testfile1 testfile2

La commande ci-dessus listera toutes les lignes contenant la chaîne « employee » des deux fichiers testfile1 et testfile2.

Vous pouvez également utiliser un caractère générique si tous les noms de fichiers commencent par le même texte.

$ grep "chaîne" nom de fichier*

Comme, si nous prenons l'exemple ci-dessus dans lequel nos noms de fichiers ont été testfile1 et testfile2 , la commande serait :

$ grep fichier de test « employé »*

Rechercher une chaîne dans un fichier en ignorant la casse de la chaîne

Le plus souvent, vous avez rencontré que lorsque vous recherchez quelque chose à l'aide de grep mais que vous ne recevez pas de sortie. Cela se produit en raison d'une incompatibilité de casse lors de la recherche d'une chaîne. Comme dans notre exemple, si nous utilisons par erreur «Employé" à la place de "employé”, il renverra nil car notre fichier contient la chaîne “employé" en lettres minuscules.

Vous pouvez dire à grep d'ignorer la casse de la chaîne de recherche en utilisant l'indicateur -i après le grep comme suit :

$ grep -i "chaîne" nom de fichier

En utilisant l'indicateur -i, la commande effectuera la recherche insensible à la casse et renverra toutes les lignes contenant la chaîne "employé” dedans sans tenir compte les lettres sont en majuscule ou en minuscule.

Recherche en utilisant l'expression régulière

Si elle est correctement utilisée, l'expression régulière est une fonctionnalité très efficace dans grep. Avec la commande Grep, vous pouvez définir une expression régulière avec un mot-clé de début et de fin. Ce faisant, vous n'aurez pas besoin de taper toute la ligne avec la commande grep. La syntaxe suivante peut être utilisée à cette fin.

$ grep "mot clé de départ.*endingKeyword" nom de fichier

Par exemple, pour rechercher une ligne dans un fichier nommé testfile1 qui commence par la chaîne « this » et se termine par la chaîne « data », nous avons utilisé la commande suivante :

$ grep « ceci.*données" fichiertest1

Il imprimera toute la ligne à partir du fichiertest1 contenant l'expression (mot-clé de départ « this » et le mot-clé de fin « données »).

Imprimer un nombre particulier de lignes après/avant la chaîne de recherche

Vous pouvez également afficher le nombre spécifique de lignes dans un fichier avant/après une correspondance de chaîne avec la chaîne correspondante elle-même. La syntaxe suivante peut être utilisée à cette fin :

$ grep -A nom de fichier "chaîne"

Il affichera N nombre de lignes après la correspondance de la chaîne dans le fichier spécifié, y compris la chaîne correspondante.

Par exemple, voici notre exemple de fichier nommé fichiertest2.

La commande suivante affichera la ligne correspondante contenant la chaîne "employé”, avec les 2 lignes qui suivent.

$ grep -A 2 -i « employé » fichier de test2

De même, pour afficher un nombre N de lignes avant la chaîne correspondante dans un fichier spécifique, utilisez la syntaxe suivante :

$ grep -B nom de fichier "chaîne"

Pour afficher un nombre N de lignes autour de la chaîne dans un fichier spécifique, utilisez la syntaxe suivante :

$ grep -C nom de fichier "chaîne"

Mettre en évidence la recherche

Grep imprime par défaut les lignes correspondantes mais ne montre pas quelle partie de la ligne correspond. Si vous utilisez l'option -color avec grep, cela montrera où les chaînes d'usinage apparaissent dans votre fichier. Grep utilise par défaut la couleur rouge pour la surbrillance.

La syntaxe suivante peut être utilisée à cette fin :

$ grep "chaîne" nom de fichier --color

Compter le nombre de matchs

Si vous voulez compter combien de fois un mot particulier apparaît dans un fichier spécifique, vous pouvez utiliser l'option grep avec -c. Il ne renvoie que le nombre de correspondances plutôt que les correspondances elles-mêmes. La syntaxe suivante peut être utilisée à cette fin :

$ grep -c "chaîne" nom de fichier

Voici notre exemple de fichier :

Voici un exemple de commande qui a renvoyé le nombre de fois que le mot déposer apparaissait dans un fichier nommé fichiertest3.

Recherche inversée

Parfois, vous souhaitez effectuer une recherche inversée qui affiche toutes les lignes sauf celles qui correspondent à l'entrée. Pour ce faire, utilisez simplement l'indicateur -v suivi de grep :

$ grep -v "chaîne" nom de fichier

Par exemple, pour afficher toutes les lignes d'un fichier fichiertest3 qui ne contiennent pas le mot « compte », nous avons utilisé la commande suivante :

$ grep -v "compte" testfile3

Utiliser Grep avec d'autres commandes

Grep peut également être utilisé pour filtrer le résultat requis à partir de la sortie de différentes commandes. Par exemple, du "apt -liste installée" sortie de la commande, vous souhaitez rechercher uniquement les packages qui ont été installés automatiquement, vous pouvez filtrer le résultat à l'aide de grep comme suit :

$ apt --liste installée | grep automatique

De même, lscpu fournit des informations détaillées sur le CPU. Si vous êtes simplement intéressé par les informations concernant l'architecture du processeur, vous pouvez les filtrer à l'aide de la commande suivante :

$ lscpu | grep Architecture

Dans cet article, nous avons décrit quelques exemples qui vous aideront à comprendre les commandes grep et son utilisation dans différentes conditions. Avoir une bonne maîtrise de la commande grep peut vous faire gagner beaucoup de temps si vous avez besoin d'examiner de gros fichiers de configuration ou de journaux et de parcourir des informations utiles.

Comment développer un jeu sur Linux
Il y a dix ans, peu d'utilisateurs de Linux prédisaient que leur système d'exploitation préféré serait un jour une plate-forme de jeu populaire pour l...
Ports Open Source des moteurs de jeux commerciaux
Les récréations de moteur de jeu gratuites, open source et multiplateformes peuvent être utilisées pour jouer à d'anciens ainsi qu'à certains des titr...
Meilleurs jeux de ligne de commande pour Linux
La ligne de commande n'est pas seulement votre plus grand allié lorsque vous utilisez Linux, elle peut également être une source de divertissement car...