50 commandes grep productives et pratiques pour les passionnés de Linux
L'outil grep sous Linux et autres systèmes de type Unix est l'un des outils de ligne de commande les plus puissants jamais développés. Il remonte à la commande ed g/re/p et est créé par le légendaire Ken Thompson. Si vous êtes un utilisateur chevronné de Linux, vous connaîtrez l'importance des expressions régulières dans le traitement des fichiers. Cependant, de nombreux utilisateurs débutants n’en ont tout simplement aucune idée. Nous constatons souvent que les utilisateurs se sentent mal à l’aise avec de telles techniques. Cependant, la plupart des commandes grep ne sont pas si complexes. Vous pouvez facilement maîtriser grep en lui donnant un peu de temps. Si vous souhaitez devenir un gourou de Linux, nous vous recommandons d'utiliser cet outil dans l'informatique quotidienne.
Commandes grep essentielles pour les utilisateurs Linux modernes
L'une des plus belles choses de la commande Linux grep est que vous pouvez l'utiliser avec toutes sortes de choses. Vous pouvez rechercher des modèles directement dans des fichiers ou à partir de votre sortie standard. Il permet aux utilisateurs de diriger la sortie d’une autre commande vers grep et de localiser des informations spécifiques. Les commandes suivantes présenteront 50 de ces commandes.
Fichiers de démonstration pour illustrer les commandes Linux grep
Étant donné que l'utilitaire Linux grep fonctionne sur des fichiers, nous avons présenté certains fichiers que vous pouvez utiliser pour vous entraîner. La plupart des distributions Linux doivent contenir des fichiers de dictionnaire dans le répertoire /usr/share/dict. Nous avons utilisé le fichier american-english trouvé ici à certaines de nos fins de démonstration. Nous avons également créé un simple fichier texte contenant les éléments suivants.
this is a sample file
it contains a collection
of lines to demonstrate
various Linux grep commandsNous l'avons nommé test.txt et l'avons utilisé dans de nombreux exemples grep. Vous pouvez copier le texte à partir d'ici et utiliser le même nom de fichier pour vous entraîner. De plus, nous avons également exploité le fichier /etc/passwd.
Exemples grep de base
Étant donné que la commande grep permet aux utilisateurs d'extraire des informations à l'aide d'une pléthore de combinaisons, les utilisateurs débutants sont souvent confus quant à son utilisation. Nous montrons quelques exemples de base de grep pour vous aider à vous familiariser avec cet outil. Cela vous aidera à apprendre des commandes plus avancées à l’avenir.
1. Localiser les informations dans un fichier unique
L'une des utilisations de base de grep sous Linux consiste à localiser les lignes contenant des informations spécifiques à partir de fichiers. Entrez simplement le modèle suivi du nom de fichier après grep, comme indiqué ci-dessous.
$ grep root /etc/passwd
$ grep $USER /etc/passwdLe premier exemple affichera toutes les lignes contenant root dans le fichier /etc/passwd. La deuxième commande affichera toutes les lignes contenant votre nom d'utilisateur.
2. Localiser des informations dans plusieurs fichiers
Vous pouvez utiliser grep pour imprimer des lignes contenant des motifs spécifiques provenant de plusieurs fichiers en même temps. Fournissez simplement tous les noms de fichiers séparés par des espaces après le modèle. Nous avons copié test.txt et créé un autre fichier contenant les mêmes lignes mais nommé test1.txt.
$ cp test.txt test1.txt
$ grep file test.txt test1.txtMaintenant, grep imprimera toutes les lignes contenant le fichier des deux fichiers.
3. Imprimer la partie correspondante uniquement
Par défaut, grep affichera la ligne entière contenant le motif. Vous pouvez supprimer cette sortie et demander à grep d'afficher uniquement la partie correspondante. Ainsi, grep n'affichera que les modèles spécifiés, s'ils existent.
$ grep -o $USER /etc/passwd
$ grep --only-matching $USER /etc/passwdCette commande affichera la valeur de $USER autant de fois que grep la rencontrera. Si aucune correspondance n'est trouvée, la sortie sera vide et grep se terminera.
4. Ignorer la correspondance de casse
Par défaut, grep recherchera le modèle donné en tenant compte de la casse. Parfois, l’utilisateur peut ne pas être sûr de la casse du modèle. Vous pouvez dire à grep d'ignorer la casse du modèle dans de tels cas, comme démontré ci-dessous.
$ grep -i $USER /etc/passwd
$ grep --ignore-case $USER /etc/passwd
$ grep -y $USER /etc/passwdCela renvoie une ligne de sortie supplémentaire dans mon terminal. Cela devrait également être la même chose sur votre machine. La dernière commande est obsolète alors évitez d’utiliser celle-là.
5. Inverser les modèles grep correspondants
L'utilitaire grep permet aux utilisateurs d'inverser la correspondance. Cela signifie que grep imprimera toutes les lignes qui ne contiennent pas le modèle donné. Consultez la commande ci-dessous pour un aperçu rapide.
$ grep -v file test.txt
$ grep --invert-match file test.txtLes commandes ci-dessus sont équivalentes et n'impriment que les lignes qui ne contiennent pas le fichier.
6. Faire correspondre des mots entiers uniquement
L'utilitaire grep imprime n'importe quelle ligne contenant le motif. Ainsi, il imprimera également des lignes comportant le motif à l’intérieur de mots ou de phrases arbitraires. Vous souhaiterez souvent ignorer ces valeurs. Vous pouvez facilement le faire en utilisant l'option -w, comme indiqué ci-dessous.
$ grep hello /usr/share/dict/american-english
$ grep -w hello /usr/share/dict/american-englishSi vous les exécutez les uns après les autres, vous verrez la différence. Dans mon système, la première commande renvoie 5 lignes alors que la deuxième commande n'en renvoie que deux.
7. Comptez le nombre de correspondances
Souvent, vous souhaiterez peut-être simplement connaître le nombre de correspondances trouvées à l’aide d’un modèle. L'option -c est très pratique dans de telles situations. Lorsqu'il est utilisé, grep renvoie le nombre de correspondances au lieu d'imprimer les lignes. Nous avons ajouté cet indicateur aux commandes ci-dessus pour vous aider à visualiser comment cela fonctionne.
$ grep -c hello /usr/share/dict/american-english
$ grep -c -w hello /usr/share/dict/american-englishLes commandes renvoient respectivement 5 et 2.
8. Afficher le numéro de ligne
Vous pouvez demander à grep d'afficher les numéros de ligne pour lesquels une correspondance a été trouvée. Il utilise un index basé sur 1 où la première ligne du fichier est la ligne numéro 1 et la dixième ligne est la ligne numéro 10. Jetez un œil aux commandes ci-dessous pour comprendre comment cela fonctionne.
$ grep -n -w cat /usr/share/dict/american-english
$ grep --line-number -w cat /usr/share/dict/american-englishLes deux commandes ci-dessus affichent les lignes contenant le mot chat dans le dictionnaire américain-anglais.
9. Supprimer les préfixes de nom de fichier
Si vous exécutez à nouveau les exemples de la deuxième commande, vous remarquerez que grep préfixe la sortie avec les noms de fichiers. Souvent, vous souhaiterez peut-être les ignorer ou les omettre complètement. Les commandes Linux grep suivantes illustreront cela pour vous.
$ grep -h file test.txt test1.txt
$ grep --no-filename file test.txt test1.txt
Les deux commandes ci-dessus sont équivalentes, vous pouvez donc choisir celle de votre choix. Ils renverront uniquement les lignes avec le modèle correspondant, pas les noms de fichiers.
10. Afficher uniquement les préfixes de nom de fichier
D'un autre côté, vous souhaiterez parfois uniquement les noms de fichiers contenant un modèle. Vous pouvez utiliser l'option -l pour cela. La forme longue de cette option est -files-with-matches.
$ grep -l cat /usr/share/dict/*-english
$ grep --files-with-matches cat /usr/share/dict/*-englishLes deux commandes ci-dessus affichent les noms de fichiers contenant le modèle cat. Il affiche les dictionnaires américain-anglais et britannique-anglais comme sortie de grep dans mon terminal.
11. Lire des fichiers de manière récursive
Vous pouvez demander à grep de lire tous les fichiers d'un répertoire de manière récursive en utilisant l'option -r ou -récursive. Cela imprimera toutes les lignes contenant la correspondance et les préfixera avec les noms de fichiers où elles ont été trouvées.
$ grep -r -w cat /usr/share/dictCette commande affichera tous les fichiers contenant le mot cat à côté de leurs noms de fichiers. Nous utilisons l'emplacement /usr/share/dict car il contient déjà plusieurs fichiers de dictionnaire. L'option -R peut être utilisée pour permettre à grep de parcourir des liens symboliques.
12. Afficher les correspondances avec l'ensemble du modèle
Vous pouvez également demander à grep d'afficher uniquement les correspondances contenant la correspondance exacte dans toute la ligne. Par exemple, la commande ci-dessous générera des lignes contenant uniquement le mot chat.
$ grep -r -x cat /usr/share/dict/
$ grep -r --line-regexp cat /usr/share/dict/Ils renvoient simplement les trois lignes qui contiennent uniquement cat dans mes dictionnaires. Mon Ubuntu 19.10 contient trois fichiers dans le répertoire /dict contenant le mot cat sur une seule ligne.
Expressions régulières dans la commande Linux grep
L'une des fonctionnalités les plus intéressantes de grep est sa capacité à travailler avec des expressions régulières complexes. Nous n'avons vu que quelques exemples de base de grep illustrant bon nombre de ses options. Cependant, la capacité de traiter des fichiers basés sur des expressions régulières est bien plus exigeante. Étant donné que les expressions régulières nécessitent une étude technique approfondie, nous nous en tiendrons à des exemples simples.
13. Sélectionnez les correspondances au début
Vous pouvez utiliser grep pour spécifier une correspondance au début d'une ligne uniquement. C’est ce qu’on appelle l’ancrage du modèle. Vous devrez utiliser l'opérateur caret '^' à cette fin.
$ grep "^cat" /usr/share/dict/american-englishLa commande ci-dessus imprimera toutes les lignes du dictionnaire Linux américain-anglais commençant par cat. Nous n’avons pas utilisé de guillemets pour spécifier nos modèles jusqu’à cette partie de notre guide. Cependant, nous les utiliserons désormais et vous recommandons de les utiliser également.
14. Sélectionner les correspondances à la fin
De la même manière que pour la commande ci-dessus, vous pouvez également ancrer votre motif pour qu'il corresponde aux lignes contenant un motif à la fin. Consultez la commande ci-dessous pour comprendre comment cela fonctionne sous Linux grep.
$ grep "fish$" /usr/share/dict/american-englishCette commande imprimera toutes les lignes qui se terminent par poisson. Remarquez comment nous avons utilisé le symbole $à la fin de notre modèle dans ce cas.
15. Faire correspondre un seul personnage
L'utilitaire Unix grep permet aux utilisateurs de faire correspondre n'importe quel caractère dans le cadre du modèle. L’opérateur point ‘.’ est utilisé à cet effet. Jetez un œil aux exemples ci-dessous pour une meilleure compréhension.
$ grep -x "c.t" /usr/share/dict/american-englishCette commande imprimera toutes les lignes contenant des mots de trois caractères commençant par c et se terminant par t. Si vous omettez l'option -x, le résultat deviendra très volumineux puisque grep affichera toutes les lignes contenant une combinaison de ces caractères. Vous pouvez utiliser le double .. pour spécifier deux caractères aléatoires et autres.
16. Correspondance à partir d'un ensemble de caractères
Vous pouvez également choisir facilement parmi un ensemble de caractères à l’aide de parenthèses. Il indique à grep de sélectionner les caractères en fonction de certains critères. Vous utiliserez généralement des expressions régulières pour spécifier ces critères.
$ grep "c[aeiou]t" /usr/share/dict/american-english
$ grep -x "m[aeiou]n" /usr/share/dict/american-englishLe premier exemple imprimera toutes les lignes du dictionnaire américain-anglais qui contiennent le motif c suivi d'une seule voyelle et du caractère t. L'exemple suivant affichera tous les mots exacts contenant m suivi d'une voyelle puis de n.
17. Faites correspondre une gamme de personnages
Les commandes suivantes montreront comment faire correspondre une plage de caractères à l'aide de grep. Essayez les commandes par vous-même pour voir comment les choses fonctionnent.
$ grep "^[A-Z]" /usr/share/dict/american-english
$ grep "[A-Z]$" /usr/share/dict/american-englishLe premier exemple imprimera toutes les lignes commençant par une lettre majuscule. La deuxième commande affiche uniquement les lignes se terminant par une majuscule.
18. Omettre des caractères dans les modèles
Parfois, vous souhaiterez peut-être rechercher des modèles qui ne contiennent pas de caractère spécifique. Nous allons vous montrer comment procéder en utilisant grep dans l'exemple suivant.
$ grep -w "[^c]at$" /usr/share/dict/american-english
$ grep -w "[^c][aeiou]t" /usr/share/dict/american-englishLa première commande affiche tous les mots se terminant par at sauf cat. Le [^c] indique à grep d'omettre le caractère c de sa recherche. Le deuxième exemple demande à grep d'afficher tous les mots qui se terminent par une voyelle suivie de t et ne contiennent pas de c.
19. Regrouper les personnages à l'intérieur du motif
Le [] vous permet uniquement de spécifier un seul jeu de caractères. Bien que vous puissiez utiliser plusieurs jeux de crochets pour spécifier des caractères supplémentaires, cela ne convient pas si vous savez déjà quels groupes de caractères vous intéressent. Heureusement, vous pouvez utiliser le() pour regrouper plusieurs caractères dans vos modèles.
$ grep -E "(copy)" /usr/share/dict/american-english
$ egrep "(copy)" /usr/share/dict/american-englishLa première commande affiche toutes les lignes contenant la copie du groupe de caractères. L'indicateur -E est obligatoire. Vous pouvez utiliser la deuxième commande egrep si vous souhaitez omettre cet indicateur. C'est simplement un frontal étendu pour grep.
20. Spécifier les caractères facultatifs dans le motif
L'utilitaire grep permet également aux utilisateurs de spécifier des caractères facultatifs pour leurs modèles. Vous devrez utiliser le symbole «?» pour cela. Tout ce qui précède ce caractère sera facultatif dans votre modèle.
$ grep -E "(commu)?nist" /usr/share/dict/american-englishCette commande imprimera le mot communiste à côté de toutes les lignes du dictionnaire qui contiennent nist. Découvrez comment l'option -E est utilisée ici. Il permet à grep d'effectuer une correspondance de modèles plus complexe ou étendue.
21. Spécifier les répétitions dans le motif
Vous pouvez spécifier combien de fois un modèle doit être mis en correspondance pour certaines commandes grep. Les commandes suivantes vous montrent comment sélectionner le nombre de caractères d'une classe pour les modèles grep.
$ grep -E "[aeiou]{3}" /usr/share/dict/american-english
$ grep -E "c[aeiou]{2}t" /usr/share/dict/american-englishLe premier exemple imprimera toutes les lignes contenant trois voyelles tandis que le dernier exemple imprimera toutes les lignes contenant c suivi de 2 voyelles puis t.
22. Spécifiez une ou plusieurs répétitions
Vous pouvez également utiliser l'opérateur «+» inclus dans l'ensemble de fonctionnalités étendues de grep pour spécifier une correspondance une ou plusieurs fois. Consultez les commandes suivantes pour voir comment cela fonctionne dans la commande Linux grep.
$ egrep -c "[aeiou]+" /usr/share/dict/american-english
$ egrep -c "[aeiou]{3}" /usr/share/dict/american-englishLa première commande affiche le nombre de fois où grep rencontre une ou plusieurs voyelles consécutives. Et la deuxième commande montre combien de lignes contiennent trois voyelles consécutives. Il devrait y avoir une grande marge de différence.
23. Spécifier une limite inférieure pour les répétitions
Vous pouvez sélectionner à la fois une limite supérieure et une limite inférieure pour le nombre de répétitions de match. Les exemples suivants montrent comment sélectionner des limites inférieures en action.
$ egrep "[aeiou]{3,}" /usr/share/dict/american-englishNous avons utilisé egrep au lieu de grep -E pour la commande ci-dessus. Il sélectionne toutes les lignes contenant 3 voyelles consécutives ou plus.
24. Spécifier la limite supérieure pour les répétitions
Comme pour les limites inférieures, vous pouvez également indiquer à grep combien de fois faire correspondre certains caractères au maximum. L'exemple suivant correspond à toutes les lignes du dictionnaire américain-anglais contenant jusqu'à 3 voyelles.
$ egrep "[aeiou]{,3}" /usr/share/dict/american-englishNous recommandons aux utilisateurs d'utiliser egrep pour ces fonctionnalités étendues, car il est un peu plus rapide et plus conventionnel de nos jours. Notez l'emplacement du symbole virgule ',' dans les deux commandes susmentionnées.
25. Spécifier les limites supérieure et inférieure
L'utilitaire grep permet également aux utilisateurs de sélectionner simultanément la limite supérieure et la limite inférieure pour les répétitions de correspondance. La commande suivante indique à grep de faire correspondre tous les mots contenant au minimum deux et au plus quatre voyelles consécutives.
$ egrep "[aeiou]{2,4}" /usr/share/dict/american-englishDe cette façon, vous pouvez spécifier simultanément les limites supérieure et inférieure.
26. Sélectionner tous les personnages
Vous pouvez utiliser le caractère générique '*' pour sélectionner toutes les occurrences de zéro ou plusieurs d'une classe de caractères dans vos modèles grep. Consultez l’exemple suivant pour comprendre comment cela fonctionne.
$ egrep "collect*" test.txt
$ egrep "c[aeiou]*t /usr/share/dict/american-englishLe premier exemple imprime le mot collection puisque c'est le seul mot qui correspond à « collecter » une ou plusieurs fois dans le fichier test.txt. Le dernier exemple correspond à toutes les lignes contenant c suivi d'un nombre quelconque de voyelles, puis t dans le dictionnaire Linux américain-anglais.
27. Expressions régulières alternatives
L'utilitaire grep permet aux utilisateurs de spécifier des modèles alternés. Vous pouvez utiliser le caractère « | » pour demander à grep de sélectionner l'un des deux modèles. Ce caractère est connu sous le nom d'opérateur infixe dans la terminologie POSIX. Jetez un œil à l’exemple ci-dessous pour comprendre son effet.
$ egrep "[AEIOU]{2}|[aeiou]{2}" /usr/share/dict/american-englishCette commande indique à grep de faire correspondre toutes les lignes contenant 2 voyelles majuscules ou petites voyelles consécutives.
28. Sélectionnez un modèle pour faire correspondre les caractères alphanumériques
Les modèles alphanumériques contiennent à la fois des chiffres et des lettres. Les exemples ci-dessous montrent comment sélectionner toutes les lignes contenant des caractères alphanumériques à l'aide de la commande grep.
$ egrep "[0-9A-Za-z]{3}" /usr/share/dict/american-english
$ egrep "[[:alnum:]]{3}" /usr/share/dict/american-englishLes deux commandes ci-dessus font la même chose. Nous disons à grep de faire correspondre toutes les lignes contenant trois combinaisons de caractères consécutives de 0 à 9, A à Z et a à z. Cependant, le deuxième exemple nous évite d’écrire nous-mêmes le spécificateur de modèle. C'est ce qu'on appelle une expression spéciale et grep en propose plusieurs.
29. Échapper aux caractères spéciaux
Jusqu'à présent, nous avons utilisé de nombreux caractères spéciaux tels que « $», « ^» et « | » pour définir des expressions régulières étendues. Mais que se passe-t-il si vous devez faire correspondre l'un de ces caractères dans votre modèle. Heureusement, les développeurs de grep y ont déjà pensé et permettent d'échapper à ces caractères spéciaux en utilisant la barre oblique inverse « \ ».
$ egrep "\-" /etc/passwdLa commande ci-dessus fait correspondre toutes les lignes du fichier /etc/passwd avec le trait d'union « - » et les imprime. Vous pouvez ainsi échapper à tout autre caractère spécial en utilisant une barre oblique inverse.
30. Répéter les modèles grep
Vous avez déjà utilisé le caractère générique « * » pour sélectionner des chaînes de caractères dans vos modèles. La commande suivante vous montre comment imprimer toutes les lignes commençant par des parenthèses et contenant uniquement des lettres et un seul espace. Nous utiliserons « * » pour ce faire.
$ egrep "([A-Za-z ]*)" test.txtAjoutez maintenant quelques lignes entre parenthèses dans votre fichier de démonstration test.txt et exécutez cette commande. Vous devriez déjà maîtriser cette commande.
Commandes Linux grep dans l'informatique quotidienne
L'une des meilleures choses à propos de grep est son applicabilité universelle. Vous pouvez utiliser cette commande pour filtrer les informations essentielles lors de l'exécution de commandes importantes du terminal Linux. Bien que la section ci-dessous vous donne un aperçu rapide de certains d’entre eux, vous pouvez appliquer les principes de base n’importe où.
31. Afficher tous les sous-répertoires
La commande suivante illustre comment nous pouvons utiliser grep pour faire correspondre tous les dossiers d'un répertoire. Nous utilisons la commande ls -l pour afficher le contenu du répertoire dans la sortie standard et couper les lignes correspondantes avec grep.
$ ls -l ~ | grep "drw"Étant donné que tous les répertoires sous Linux contiennent le modèle drw à leur début, nous l'utilisons comme modèle pour grep.
32. Afficher tous les fichiers Mp3
La commande suivante montre comment utiliser grep pour localiser des fichiers mp3 sur votre machine Linux. Nous utiliserons à nouveau la commande ls ici.
$ ls /path/to/music/dir/ | grep ".mp3"Tout d'abord, ls imprimera le contenu de votre répertoire musical sur la sortie, puis grep fera correspondre toutes les lignes contenant .mp3. Vous ne verrez pas la sortie de ls puisque nous avons transmis ces données directement à grep.
33. Rechercher du texte dans des fichiers
Vous pouvez également utiliser grep pour rechercher des modèles de texte spécifiques dans un seul fichier ou une collection de fichiers. Supposons que vous souhaitiez localiser tous les fichiers de programme C contenant le texte main. Ne vous inquiétez pas pour cela, vous pouvez toujours l'apprécier.
$ grep -l 'main' /path/to/files/*.cPar défaut, grep doit coder en couleur la partie correspondante pour vous aider à visualiser facilement vos résultats. Cependant, si cela ne parvient pas à le faire sur votre machine Linux, essayez d'ajouter l'option -color à votre commande.
34. Rechercher des hôtes réseau
Le fichier /etc/hosts contient des informations telles que l'adresse IP et le nom d'hôte. Vous pouvez utiliser grep pour rechercher des informations spécifiques à partir de cette entrée à l'aide de la commande ci-dessous.
$ grep -E -o "([0-9]{1,3}[\.]){3}[0-9]{1,3}" /etc/hostsNe vous inquiétez pas si vous ne comprenez pas immédiatement le schéma. Si vous les décomposez un par un, c’est très facile à comprendre. En fait, ce modèle recherche toutes les correspondances comprises entre 0.0.0.0 et 999.999.999.999. Vous pouvez également effectuer une recherche à l'aide de noms d'hôtes.
35. Rechercher les packages installés
Linux repose sur plusieurs bibliothèques et packages. L'outil de ligne de commande dpkg permet aux administrateurs de contrôler les packages sur les distributions Linux basées sur Debian telles qu'Ubuntu. Vous verrez ci-dessous comment nous utilisons grep pour filtrer les informations essentielles sur un package à l'aide de dpkg.
$ dpkg --list | grep "chrome"Il fait apparaître plusieurs informations utiles sur ma machine, notamment le numéro de version, l'architecture et la description du navigateur Google Chrome. Vous pouvez l'utiliser de la même manière pour rechercher des informations sur les packages installés sur votre système.
36. Rechercher les images Linux disponibles
Nous utilisons à nouveau l'utilitaire grep avec la commande dpkg afin de trouver toutes les images Linux disponibles. Le résultat de cette commande varie considérablement selon les systèmes.
$ dpkg --list | grep linux-imageCette commande imprime simplement le résultat de dpkg -list et le transmet à grep. Il fait ensuite correspondre toutes les lignes du motif donné.
37. Rechercher des informations sur le modèle du processeur
La commande ci-dessous montre comment localiser les informations sur le modèle de processeur dans les systèmes Linux à l'aide de la commande grep.
$ cat /proc/cpuinfo | grep -i 'model'
$ grep -i "model" /proc/cpuinfoDans le premier exemple, nous avons redirigé la sortie de cat /proc/cpuinfo vers grep et fait correspondre toutes les lignes contenant le mot model. Cependant, puisque /proc/cpuinfo est lui-même un fichier, vous pouvez utiliser grep directement dessus, comme le montre ce dernier exemple.
38. Rechercher des informations de journal
Linux enregistre toutes sortes de journaux dans le répertoire /var pour les administrateurs système américains. Vous pouvez facilement récupérer des informations utiles à partir de ces fichiers journaux. La commande ci-dessous montre un exemple simple.
$ grep -i "cron" /var/log/auth.logCette commande inspectera le fichier /var/log/auth.log à la recherche de lignes potentielles contenant des informations sur les tâches Linux CRON. Le drapeau -i nous permet d'être plus flexible. L'exécution de cette commande affiche toutes les lignes contenant le mot CRON dans le fichier auth.log.
39. Rechercher des informations sur le processus
La commande suivante montrera comment localiser des informations utiles pour les processus système à l'aide de grep. Un processus est l'instance en cours d'exécution d'un programme sur les machines Linux.
$ ps auxww | grep 'guake'Cette commande imprimera toutes les informations relatives au package guake. Essayez avec un autre package si guake n'est pas disponible sur votre machine.
40. Sélectionnez Adresses IP valides uniquement
Plus tôt, nous avons utilisé une expression régulière relativement plus simple pour faire correspondre les adresses IP du fichier /etc/hosts. Cependant, cette commande correspondrait également à de nombreuses adresses IP non valides, car les adresses IP valides ne peuvent prendre que les valeurs de la plage (1 à 255) dans chacun de leurs quatre quadrants.
$ egrep '\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' /etc/hostsLa commande ci-dessus n'imprimera aucune adresse IP invalide telle que 999.999.999.999.
41. Rechercher dans les fichiers compressés
Le frontal zgrep de la commande Linux grep nous permet de rechercher des modèles directement dans les fichiers compressés. Jetez un coup d’œil rapide aux extraits de code suivants pour une meilleure compréhension.
$ gzip test.txt
$ zgrep -i "sample" test.txt.gzTout d'abord, nous compressons le fichier test.txt à l'aide de gzip, puis nous utilisons zgrep pour rechercher l'exemple de mot.
42. Compter le nombre de lignes vides
Vous pouvez facilement compter le nombre de lignes vides dans un fichier en utilisant grep, comme le montre l'exemple suivant.
$ grep -c "^$" test.txtPuisque test.txt ne contient qu'une seule ligne vide, cette commande renvoie 1. Les lignes vides sont mises en correspondance à l'aide de l'expression régulière « ^$» et leur décompte est imprimé en exploitant l'option -c.
43. Trouver plusieurs modèles
Jusqu’à présent, nous nous sommes concentrés sur la recherche d’un seul modèle. L'utilitaire grep permet également aux utilisateurs de rechercher des lignes comportant plusieurs modèles en même temps. Jetez un œil aux exemples de commandes ci-dessous pour voir comment cela fonctionne.
$ grep -e 'sample' -e 'file' test.txt
$ grep -e 'sample' test.txt | grep -e 'file'
$ grep -e 'sample\| file' test.txtToutes les commandes ci-dessus imprimeront les lignes qui contiennent à la fois « échantillon » et « fichier ».
44. Faire correspondre les adresses e-mail valides
De nombreux programmeurs chevronnés aiment valider eux-mêmes les entrées des utilisateurs. Heureusement, il est très simple de valider les données d'entrée telles que l'adresse IP et les e-mails à l'aide des expressions régulières grep. La commande suivante correspondra à toutes les adresses e-mail valides.
$ grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" /path/to/dataCette commande est extrêmement efficace et correspond facilement à jusqu’à 99 % d’adresses e-mail valides. Vous pouvez utiliser egrep pour accélérer le processus.
Commandes grep diverses
L'utilitaire grep propose de nombreuses combinaisons de commandes plus utiles qui permettent d'effectuer d'autres opérations sur les données. Nous discutons de quelques commandes rarement utilisées mais essentielles dans cette section.
45. Sélectionner des modèles à partir de fichiers
Vous pouvez sélectionner assez facilement vos modèles d'expressions régulières pour grep à partir de fichiers prédéfinis. Utilisez l'option -f pour cela.
$ echo "sample"> file
$ grep -f file test.txtNous créons un fichier d'entrée contenant un modèle à l'aide de la commande echo. La deuxième commande illustre l'entrée de fichier pour grep.
46. Contextes de contrôle
Vous pouvez facilement contrôler le contexte de sortie de grep à l'aide des options -A, -B et -C. Les commandes suivantes les montrent en action.
$ grep -A2 'file' test.txt
$ grep -B2 'file' test.txt
$ grep -C3 'Linux' test.txtLe premier exemple montre les 2 lignes suivantes après le match, le deuxième exemple montre les 2 précédentes et le dernier exemple montre les deux.
47. Supprimer les messages d'erreur
L'option -s permet aux utilisateurs de supprimer les messages d'erreur par défaut affichés par grep en cas de fichiers inexistants ou illisibles.
$ grep -s 'file' testing.txt
$ grep −−no-messages 'file' testing.txtBien qu'il n'y ait aucun fichier nommé testing.txt dans mon répertoire de travail, grep n'émet aucun message d'erreur pour cette commande.
48. Afficher les informations sur la version
L'utilitaire grep est beaucoup plus ancien que Linux lui-même et remonte aux débuts d'Unix. Utilisez la commande suivante si vous souhaitez obtenir les informations de version de grep.
$ grep -V
$ grep --version49. Afficher la page d'aide
La page d'aide de grep contient une liste résumée de toutes les fonctions disponibles. Cela permet de résoudre de nombreux problèmes directement depuis le terminal.
$ grep --helpCette commande invoquera la page d'aide pour grep.
50. Consulter la documentation
La documentation grep est extrêmement détaillée et fournit une introduction approfondie aux fonctionnalités disponibles et à l'utilisation des expressions régulières. Vous pouvez consulter la page de manuel de grep en utilisant la commande ci-dessous.
$ man grepPensées finales
Étant donné que vous pouvez créer n'importe quelle combinaison de commandes à l'aide des options CLI robustes de grep, il est difficile de tout résumer sur la commande grep dans un seul guide. Cependant, nos éditeurs ont fait de leur mieux pour décrire presque tous les exemples pratiques de grep pour vous aider à mieux vous familiariser avec celui-ci. Nous vous suggérons de pratiquer autant de ces commandes que possible et de trouver des moyens d'intégrer grep dans votre traitement quotidien de fichiers. Bien que vous puissiez être confronté à de nouveaux obstacles chaque jour, c'est le seul moyen de vraiment maîtriser la commande Linux grep.







