Commande Grep dans Linux

Commande Grep dans Linux
La commande grep (Global régulier d'expression) est l'utilitaire de ligne de commande Linux le plus puissant et le plus utilisé. À l'aide de 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 correspondait au modèle spécifié. Il est utile lorsque vous devez filtrer via de grands fichiers journaux.

Dans cet article, nous expliquerons l'utilité du 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, dans le cas, il manque à votre système, vous pouvez l'installer en utilisant la méthode suivante dans le terminal:

$ sudo apt-get install grep

Utilisation du grep

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

$ grep [options] modèle [fichier…]

Rechercher des fichiers

Pour rechercher un nom de fichier dans un répertoire qui contient 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 qui contient une chaîne "test«, La commande serait:

$ ls -l | Test grep -i

Cette commande répertorie 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:

Nom de fichier «String» Grep «String»

Par exemple, pour rechercher une chaîne "test"Dans un fichier nommé TestFile1, Nous avons utilisé la commande suivante:

$ grep «Employee» testfile1

La sortie ci-dessus a renvoyé la phrase du TestFile1 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 «String» filename1 filename2

Par exemple, pour rechercher un «employé» de chaîne dans nos deux fichiers TestFile1 et TestFile2, nous avons utilisé la commande suivante:

$ grep «Employee» testfile1 testfile2

La commande ci-dessus répertorie toutes les lignes qui contiennent la chaîne «employé» à partir des 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 «String» Nom de fichier *

Comme, si nous prenons l'exemple ci-dessus dans lequel nos noms de fichiers étaient TestFile1 et TestFile2 , La commande serait:

$ grep «Employee» TestFile *

Recherchez une chaîne dans un fichier en ignorant le cas de la chaîne

Le plus souvent, vous avez rencontré cela lorsque vous recherchez quelque chose en utilisant Grep mais ne recevez pas de sortie. Cela se produit à cause d'un décalage de cas lors de la recherche d'une chaîne. Comme dans notre exemple, si nous utilisons par erreur «Employé" au lieu de "employé», Il renverra nulle car notre fichier contient la chaîne«employé”Dans les lettres minuscules.

Vous pouvez dire à Grep d'ignorer le cas de la chaîne de recherche en utilisant le drapeau -I après le grep comme suit:

$ grep -i nom de fichier "string"

En utilisant le drapeau -I, la commande effectuera la recherche insensible au cas et renverra toutes les lignes contenant la chaîne "employé"Dedans sans prendre en compte les lettres sont en majuscules ou en minuscules.

Recherche en utilisant l'expression régulière

S'il est correctement utilisé, l'expression régulière est une caractéristique très efficace de la grep. Avec la commande grep, vous pouvez définir une expression régulière avec un mot-clé de départ 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 à cet effet.

$ grep «Mot-clé de démarrage.* File de fichier EndingKeyword »

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

$ grep «ceci.* data ”testfile1

Il imprimera toute la ligne du TestFile1 contenant l'expression (mot-clé de démarrage «ceci» et le mot-clé final «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 à cet effet:

$ grep -a Nom de fichier «String»

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, il s'agit de notre exemple de fichier nommé TestFile2.

La commande suivante sortira la ligne correspondante contenant la chaîne "employé», Ainsi que les 2 lignes après.

$ grep -a 2 -i «employé» testfile2

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

$ grep -b Nom de fichier «String»

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

$ grep -c Nom de fichier «String»

Mettre en évidence la recherche

Grep par défaut imprimer les lignes correspondant mais ne montre pas quelle partie de la ligne est adaptée. Si vous utilisez l'option -color avec Grep, cela montrera où les chaînes d'usinage apparaissent dans votre fichier. Grep par défaut Utilisez la couleur rouge pour mettre en évidence.

La syntaxe suivante peut être utilisée à cet effet:

$ grep «String» Nom - Color

Compter le nombre de matchs

Si vous souhaitez 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 matchs plutôt que les matchs lui-même. La syntaxe suivante peut être utilisée à cet effet:

$ grep -c «String» Nom

Ceci est notre exemple de fichier:

Voici un exemple d'une commande qui a renvoyé le nombre de fois le mot déposer est apparu dans un fichier nommé TestFile3.

Recherche inversée

Parfois, vous voulez effectuer une recherche inverse qui affiche toutes les lignes, sauf que celle correspondant à l'entrée. Pour ce faire, utilisez simplement le drapeau -v suivi de Grep:

$ grep -v nom de fichier «string»

Par exemple, pour afficher toutes les lignes dans un fichier TestFile3 qui ne contiennent pas le mot «compte» en eux, nous avons utilisé la commande suivante:

$ grep -v «compte» testfile3

Utilisation de Grep avec d'autres commandes

Le Grep peut également être utilisé pour filtrer le résultat requis de la sortie des différentes commandes. Par exemple, à partir du «Liste apt-installée » Sortie de commande, vous souhaitez trouver uniquement les packages qui ont été installés automatiquement, vous pouvez filtrer le résultat en utilisant Grep comme suit:

$ apt - liste d'installation | 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 CPU, vous pouvez la filtrer en utilisant la commande suivante:

$ lscpu | architecture grep

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 forte adhérence sur la commande grep peut gagner beaucoup de temps si vous devez regarder des fichiers de configuration ou de journal.