Commande Grep sous Linux

Grep Command 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 correspondent au modèle spécifié. Cela s'avère pratique lorsque vous devez filtrer des fichiers journaux volumineux.

Dans cet article, nous expliquerons l'utilisation de l'utilitaire grep avec différents exemples. Nous utiliserons Debian 10 pour expliquer les commandes et les 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 installer saisir

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.



$saisir [options]MODÈLE[DÉPOSER...]

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 | saisir -jechaîne de caractères

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

$ls–l| saisir-jetest

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 :

$saisirnom de fichier de chaîne

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

$saisirfichier de test des employés1

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 :

$saisirchaîne nom_fichier1 nom_fichier2

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

$saisiremployé testfile1 testfile2

La commande ci-dessus listera toutes les lignes contenant la chaîne employee 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.

$saisirnom de fichier de chaîne*

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

$saisirfichier de test des employés*

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

Le plus souvent, vous avez rencontré cela 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 :

$saisir–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é dans celui-ci sans tenir compte des 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.

$saisirmot-clé de départ.*endingKeyword filename

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 :

$saisircette.*fichier de test de données1

Il imprimera toute la ligne à partir du fichiertest1 contenant l'expression (mot-clé de début this et le mot-clé de fin data).

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 :

$saisir <N>nom de fichier de chaîne

Il affichera N nombre de lignes une fois que la chaîne est mise en correspondance 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é , ainsi que les 2 lignes qui suivent.

$saisir2–i employé testfile2

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

$saisir -B <N>nom de fichier de chaîne

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

$saisir -C <N>nom de fichier de 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 indiquera 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 :

$saisirnom de fichier de chaîne--Couleur

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 correspondances plutôt que les correspondances elles-mêmes. La syntaxe suivante peut être utilisée à cette fin :

$saisir–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 :

$saisir–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 :

$saisir–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, de la 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 :

$apte--installéeliste| saisirautomatique

De même, lscpu fournit des informations détaillées sur le processeur. 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| saisirArchitecture

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