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-jetestCette 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înePar exemple, pour rechercher une chaîne test dans un fichier nommé fichiertest1 , nous avons utilisé la commande suivante :
$saisirfichier de test des employés1La 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_fichier2Par exemple, pour rechercher une chaîne employé dans nos deux fichiers testfile1 et testfile2, nous avons utilisé la commande suivante :
$saisiremployé testfile1 testfile2La 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 fichierEn 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 filenamePar 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ées1Il 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îneIl 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.
$saisir-À2–i employé testfile2De 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înePour 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îneMettre 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--CouleurCompter 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 fichierVoici 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 fichierPar 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 testfile3Utiliser 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| saisirArchitectureDans 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.