Comprendre GREP sous Linux : utilisation et applications

Comprendre GREP sous Linux : utilisation et applications
Une personne utilisant un ordinateur portable.

Grep est un outil UNIX compact conçu pour la recherche de modèles. Initialement introduit dans UNIX V6, il est devenu un élément de base de divers systèmes d’exploitation de type UNIX, notamment Linux, macOS et les variantes BSD. Dans cet article, nous explorerons les fonctionnalités fondamentales de Grep et fournirons des exemples pratiques de son application dans les tâches quotidiennes.

Comprendre les bases de Grep

La fonction principale de Grep est simple : il traite les entrées pour identifier et afficher les modèles de texte correspondants. Cet utilitaire peut examiner presque n’importe quelle source de texte brut, ce qui lui permet d’analyser directement les fichiers ou de travailler avec les sorties d’autres commandes.

Pour commencer à utiliser Grep, l’une des commandes les plus simples consiste à lire un fichier texte. Par exemple, vous pouvez afficher le contenu d’un fichier sample.txtavec la commande suivante :

Vous pouvez également rechercher des mots spécifiques dans vos fichiers texte :

Grep faisant correspondre un mot dans un terminal.

De plus, Grep peut être combiné avec des pipes UNIX pour unifier plusieurs commandes en une seule opération :

Utilisation de Grep pour imprimer un fichier entier sans arguments.

Pour avoir un aperçu du fonctionnement des pagers sous Linux, reportez-vous à notre aide-mémoire sur GNU less.

Recherche de fichiers dans un répertoire

Une application pratique de Grep consiste à localiser des fichiers dans un répertoire. Vous pouvez diriger la sortie de la lscommande directement vers Grep.

Par exemple, cette commande affichera tous les fichiers JPEG dans votre répertoire Téléchargements en mettant en surbrillance leurs extensions :

Grep filtre les listes de fichiers par extension de fichier.

Vous pouvez étendre la lssortie et effectuer des correspondances de modèles plus complexes. Par exemple, la commande suivante répertorie tous les fichiers du répertoire actuel dont la taille est inférieure à 1 Mo :

Capacité de Grep à faire correspondre du texte dans des formats plus grands.

Ignorer la sensibilité à la casse

Par défaut, la plupart des outils de type UNIX sont sensibles à la distinction des majuscules et des minuscules. Cela signifie que les chaînes « Hello », « hello », « hEllo » et « helLo » sont interprétées comme des entrées distinctes.

La nature sensible à la casse de Grep par défaut.

Cela peut compliquer les recherches de texte, en particulier lorsque différents cas d’un mot sont présents. Pour atténuer ce problème, vous pouvez utiliser Grep avec l’ -iindicateur associé au terme de recherche :

L'indicateur -i dans Grep qui désactive la sensibilité à la casse.

Recherche récursive

Grep permet de rechercher simultanément dans plusieurs fichiers ou dans des répertoires entiers. Cela est particulièrement utile lorsque vous examinez un projet contenant plusieurs fichiers et que vous souhaitez trouver des occurrences d’un texte spécifique dans un répertoire. Par exemple, utilisez la commande suivante pour localiser le terme « MakeTechEasier » dans le répertoire « sample » :

La fonctionnalité récursive de Grep recherche plusieurs fichiers.

Il convient de noter que l’utilisation de l’ -rindicateur oblige Grep à examiner tous les fichiers de votre répertoire spécifié, qui peuvent inclure des fichiers non textuels. Pour éviter cette situation, utilisez -Iégalement l’indicateur :

Identification des fichiers avec des chaînes spécifiques

Au-delà de l’affichage de l’emplacement d’une chaîne dans les fichiers, Grep peut générer une liste de fichiers contenant le texte que vous recherchez. Cela est utile lorsque vous souhaitez vérifier si un fichier contient un certain contenu sans afficher chaque instance trouvée.

Pour ce faire, utilisez Grep avec les indicateurs suivants, -ret -l, ainsi que votre chaîne cible et le répertoire dans lequel vous souhaitez rechercher :

Grep génère les chemins d'accès aux fichiers du contenu correspondant.

De plus, vous pouvez encapsuler votre commande Grep dans un sous-shell Bash pour appliquer plusieurs conditions de recherche. La commande suivante, par exemple, renverra des fichiers contenant à la fois « Hello » et « MakeTechEasier » dans le répertoire « sample » :

Utilisation des sous-shells Bash avec Grep pour la correspondance multi-conditions.

Révéler les résultats non concordants

En plus des recherches standard, Grep peut également générer des résultats qui excluent vos critères spécifiés. Cette fonctionnalité peut s’avérer très utile lorsque vous devez détecter des erreurs ou des irrégularités dans vos saisies de texte.

Pour exécuter cette opération, utilisez l’ -vindicateur en conjonction avec vos options préférées. Par exemple, la commande suivante analyse de manière récursive tous les fichiers du répertoire « /etc/nginx » et renvoie toutes les lignes qui n’incluent pas la chaîne « nginx » :

Utilisation de l'indicateur d'inversion pour faire correspondre tout sauf une chaîne spécifique.

À la recherche de mots et de lignes

Il peut également être utile de demander à Grep de rechercher des mots entiers ou des lignes entières plutôt qu’une chaîne correspondant à un modèle spécifique. Cette approche est particulièrement utile lorsque l’on cible une séquence de caractères qui prévaut dans plusieurs mots. Par exemple, la recherche du terme « it » peut générer de nombreux faux positifs car il apparaît dans de nombreux autres mots.

Pour résoudre ce problème, exécutez Grep en utilisant l’ -windicateur suivi du mot souhaité :

Exécution de la correspondance de mots entiers avec Grep.

Au lieu de renvoyer toutes les instances contenant le modèle de recherche, Grep renvoie uniquement le mot lui-même. Cela s’applique également à des lignes entières lors de l’utilisation de l’ -xindicateur, ce qui le rend particulièrement utile pour localiser des phrases ou des lignes exactes dans les fichiers de configuration.

Grep fait correspondre des lignes entières de texte.

Incorporation des numéros de ligne dans la sortie de Grep

Les numéros de ligne jouent un rôle essentiel dans le débogage du code et la révision des documents. Ils simplifient le processus de localisation de l’emplacement d’une ligne ou d’une fonction spécifique, accélérant ainsi considérablement les révisions.

Grep propose une fonctionnalité permettant d’inclure les numéros de ligne dans sa sortie. Vous pouvez activer cette fonction en exécutant la commande avec l’ -nindicateur ainsi que votre terme de recherche :

Grep affiche les numéros de ligne pour les correspondances dans un fichier.

En combinaison avec les pipes UNIX, vous pouvez affiner la sortie de Grep pour afficher uniquement les numéros de ligne de vos résultats de recherche. Cette approche est particulièrement utile pour traiter de gros volumes de texte :

Utilisation de tubes UNIX avec Grep pour un traitement de sortie raffiné.

Utilisation de Regex étendue avec Grep

Grep utilise des expressions régulières de base (BRE) comme métacaractères principaux pour la correspondance de texte. Bien que cela soit fonctionnel pour diverses tâches, les utilisateurs peuvent trouver cela restrictif, en particulier lors de l’examen de groupes de modèles.

Pour étendre les capacités, de nombreuses implémentations de Grep intègrent l’ -Eindicateur permettant l’analyse des expressions régulières étendues (ERE). Par exemple, la commande ci-dessous nécessite l’ -Eindicateur :

Utilisation de Regex étendu avec Grep pour faire correspondre les modèles.

De plus, Grep dispose d’un mode spécial qui élimine complètement les fonctionnalités regex. Pour l’activer, exécutez la commande avec l’ -Findicateur suivi d’une simple chaîne :

Correspondance exacte de chaîne sans regex dans Grep.

Inclure les lignes environnantes dans la sortie de Grep

La force de Grep réside dans sa capacité à révéler l’emplacement du texte dans vos entrées ou vos fichiers. Cependant, le simple affichage de l’emplacement exact peut ne pas suffire lors du dépannage. Le contexte entourant une chaîne, comme celui trouvé dans les journaux d’incidents, peut souvent fournir des informations essentielles.

Pour imprimer un contexte supplémentaire, vous pouvez exécuter Grep avec l’ -Cindicateur associé au nombre de lignes que vous souhaitez afficher avant et après votre résultat de recherche. Par exemple, pour afficher cinq lignes autour de votre chaîne cible, utilisez la commande suivante :

Grep affiche le contexte environnant pour une chaîne correspondante.

Vous pouvez également personnaliser vos résultats en imprimant de manière sélective uniquement les lignes précédentes ou suivantes à l’aide des indicateurs -Bet -A. Par exemple, la commande ci-dessous affichera les dix lignes qui viennent après votre terme de recherche :

Grep imprime les lignes qui suivent la chaîne correspondante.

Maintenant que vous disposez des connaissances de base sur Grep et que vous savez comment l’utiliser pour des tâches courantes, vous êtes prêt à approfondir vos connaissances sur la ligne de commande et l’écosystème UNIX au sens large. Explorez davantage en apprenant à utiliser sed sous Linux pour un traitement de texte encore plus puissant.

Crédit image : Alejandro Escamilla via Unsplash . Toutes les modifications et captures d’écran par Ramces Red.

Source

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *