GNU/Linux >> Tutoriels Linux >  >> Linux

50 commandes grep productives et pratiques pour les passionnés de Linux

L'outil grep sous Linux et d'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 saurez 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 voyons souvent des utilisateurs 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 de tous les jours.

Commandes grep essentielles pour les utilisateurs Linux modernes

L'une des plus belles choses à propos de la commande Linux grep est que vous pouvez l'utiliser avec toutes sortes de choses. Vous pouvez grep pour les modèles directement dans les 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 décrivent 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 décrit certains fichiers que vous pouvez utiliser pour vous entraîner. La plupart des distributions Linux devraient contenir des fichiers de dictionnaire dans le répertoire /usr/share/dict. Nous avons utilisé le fichier américain-anglais trouvé ici pour certaines de nos fins de démonstration. Nous avons également créé un simple fichier texte contenant les éléments suivants.

ceci est un exemple de fichier, il contient une collection de lignes pour illustrer diverses commandes grep Linux

Nous l'avons nommé test.txt et ont utilisé dans de nombreux exemples de 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 confondus avec son utilisation. Nous présentons 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 des lignes contenant des informations spécifiques à partir de fichiers. Entrez simplement le modèle suivi du nom du fichier après grep, comme indiqué ci-dessous.

- -
$ grep root /etc/passwd$ grep $USER /etc/passwd

Le premier exemple affichera toutes les lignes contenant root dans le fichier /etc/passwd. La deuxième commande affichera toutes ces 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 à partir de plusieurs fichiers à la fois. Indiquez simplement tous les noms de fichiers séparés par des espaces après le motif. Nous avons copié test.txt et créé un autre fichier contenant les mêmes lignes mais nommé test1.txt .

$ cp test.txt test1.txt$ fichier grep test.txt test1.txt

Maintenant, grep imprimera toutes les lignes contenant le fichier des deux fichiers.

3. Imprimer la partie correspondante uniquement

Par défaut, grep affichera toute la ligne contenant le motif. Vous pouvez supprimer cette sortie et indiquer à 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/passwd

Cette commande affichera la valeur de $USER autant de fois que grep le rencontre. 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 respectant la casse. Parfois, l'utilisateur peut ne pas être sûr de la casse du modèle. Vous pouvez indiquer à grep d'ignorer la casse du modèle dans de tels cas, comme illustré ci-dessous.

$ grep -i $USER /etc/passwd$ grep --ignore-case $USER /etc/passwd$ grep -y $USER /etc/passwd

Cela renvoie une ligne de sortie supplémentaire dans mon terminal. Il devrait également en être de même sur votre machine. La dernière commande est obsolète donc é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 motif donné. Consultez la commande ci-dessous pour un aperçu rapide.

$ grep -v fichier test.txt$ grep --invert-match fichier test.txt

Les commandes ci-dessus sont équivalentes et n'impriment que les lignes qui ne contiennent pas le fichier.

6. Ne faire correspondre que des mots entiers

L'utilitaire grep imprime toute ligne contenant le motif. Ainsi, il imprimera également des lignes qui ont le motif à l'intérieur de mots ou de phrases arbitraires. Souvent, vous voudrez 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-english

Si vous les exécutez l'un après l'autre, vous verrez la différence. Dans mon système, la première commande renvoie 5 lignes alors que la seconde n'en renvoie que deux.

7. Comptez le nombre de correspondances

Souvent, vous voudrez peut-être simplement le nombre de correspondances trouvées à l'aide d'un modèle. Le -c option 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 bonjour /usr/share/dict/anglais-américain$ grep -c -w bonjour /usr/share/dict/anglais-américain

Les commandes renvoient respectivement 5 et 2.

8. Afficher le numéro de ligne

Vous pouvez demander à grep d'afficher les numéros de ligne où 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-english

Les deux commandes ci-dessus impriment 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 voudrez peut-être les ignorer ou les omettre complètement. Les commandes grep Linux suivantes illustreront cela pour vous.

$ grep -h fichier test.txt test1.txt$ grep --no-filename fichier test.txt test1.txt

Les deux commandes ci-dessus sont équivalentes, vous pouvez donc choisir celle que vous voulez. Ils ne renverront que 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 pouvez parfois ne vouloir que les noms de fichiers contenant un motif. Vous pouvez utiliser le -l option 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/*-english

Les deux commandes ci-dessus impriment les noms de fichiers contenant le motif cat. Il affiche les dictionnaires américain-anglais et britannique-anglais comme sortie de grep dans mon terminal.

11. Lire les fichiers de manière récursive

Vous pouvez dire à grep de lire tous les fichiers d'un répertoire de manière récursive en utilisant le -r ou -option 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/dict

Cette commande affichera tous les fichiers contenant le mot chat à côté de leurs noms de fichiers. Nous utilisons l'emplacement /usr/share/dict car il contient déjà plusieurs fichiers de dictionnaire. Le -R L'option peut être utilisée pour permettre à grep de traverser les liens symboliques.

12. Afficher les correspondances avec l'ensemble du motif

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 qui ne contiennent que 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 just cat dans mes dictionnaires. Mon Ubuntu 19.10 a trois fichiers dans le répertoire /dict contenant le mot chat sur une seule ligne.

Expressions régulières dans la commande Linux grep

L'une des caractéristiques les plus convaincantes 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 beaucoup 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 matchs 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 ancrer le motif. Vous devrez utiliser le caret ‘^’ opérateur à cet effet.

$ grep "^cat" /usr/share/dict/american-english

La 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 maintenant et vous recommandons de les utiliser également.

14. Sélectionnez les matchs à la fin

Comme pour la commande ci-dessus, vous pouvez également ancrer votre motif pour qu'il corresponde aux lignes contenant le motif à la fin. Consultez la commande ci-dessous pour comprendre comment cela fonctionne dans Linux grep.

$ grep "fish$" /usr/share/dict/american-english

Cette commande imprimera toutes les lignes qui se terminent par fish. Remarquez comment nous avons utilisé le symbole $ à la fin de notre modèle dans ce cas.

15. Faire correspondre un seul caractère

L'utilitaire Unix grep permet aux utilisateurs de faire correspondre n'importe quel caractère unique dans le cadre du modèle. Le point ‘.’ L'opérateur est utilisé à cette fin. Jetez un œil aux exemples ci-dessous pour une meilleure compréhension.

$ grep -x "c.t" /usr/share/dict/american-english

Cette commande imprimera toutes les lignes contenant des mots de trois caractères commençant par c et se terminant par t. Si vous omettez le -x option, la sortie deviendra très grande puisque grep affichera toutes les lignes qui ont 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 parmi un ensemble de caractères facilement en utilisant des parenthèses. Il indique à grep de sélectionner des 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-english

Le premier exemple imprimera toutes les lignes du dictionnaire américain-anglais contenant le motif c suivi d'une seule voyelle et du caractère t. L'exemple suivant imprimera tous les mots exacts qui contiennent m suivi d'une voyelle puis de n.

17. Correspondance à partir d'une plage de caractères

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-english

Le premier exemple imprimera toutes les lignes commençant par une lettre majuscule. La deuxième commande affiche uniquement les lignes qui se terminent par une lettre majuscule.

18. Omettre les caractères dans les modèles

Parfois, vous souhaiterez peut-être rechercher des modèles qui ne contiennent pas un caractère spécifique. Nous allons vous montrer comment faire cela 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-english 

La première commande affiche tous les mots se terminant par at sauf cat. Le [^c] dit à grep d'omettre le caractère c de sa recherche. Le deuxième exemple indique à grep d'afficher tous les mots qui se terminent par une voyelle suivie de t et ne contiennent pas de c.

19. Regrouper les caractères dans le motif

Le [] ne vous permet de spécifier qu'un seul jeu de caractères. Bien que vous puissiez utiliser plusieurs ensembles 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 "(copie)" /usr/share/dict/anglais-américain$ egrep "(copie)" /usr/share/dict/anglais-américain

La première commande affiche toutes les lignes contenant la copie du groupe de caractères. Le -E le drapeau est obligatoire. Vous pouvez utiliser la deuxième commande egrep si vous souhaitez omettre cet indicateur. Il s'agit simplement d'un frontal étendu pour grep.

20. Spécifiez les caractères facultatifs dans le modèle

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-english

Cette commande imprimera le mot communiste à côté de toutes les lignes du dictionnaire contenant nist. Découvrez comment le -E option est utilisée ici. Il permet à grep d'effectuer des correspondances de modèles plus complexes ou étendues.

21. Spécifiez 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-english 

Le premier exemple imprimera toutes les lignes contenant trois voyelles alors 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 le "+" opérateur inclus dans le jeu de fonctionnalités étendu 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-english

La première commande affiche le nombre de fois que 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écifiez la limite inférieure pour les répétitions

Vous pouvez sélectionner à la fois la limite supérieure et la limite inférieure pour le nombre de répétitions de correspondance. Les exemples suivants montrent comment sélectionner des limites inférieures en action.

$ egrep "[aeiou]{3,}" /usr/share/dict/american-english

Nous avons utilisé egrep au lieu de grep -E pour la commande ci-dessus. Il sélectionne toutes les lignes qui contiennent 3 voyelles consécutives ou plus.

24. Spécifiez la limite supérieure pour les répétitions

Comme pour les limites inférieures, vous pouvez également indiquer à grep combien de fois au maximum faire correspondre certains caractères. L'exemple suivant correspond à toutes les lignes du dictionnaire américain-anglais contenant jusqu'à 3 voyelles.

$ egrep "[aeiou]{,3}" /usr/share/dict/american-english

Nous recommandons aux utilisateurs d'utiliser egrep pour ces fonctionnalités étendues car il est un peu plus rapide et plus une convention de nos jours. Remarquez l'emplacement de la virgule ‘,’ symbole dans les deux commandes susmentionnées.

25. Spécifiez 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 moins deux et au plus quatre voyelles consécutives.

$ egrep "[aeiou]{2,4}" /usr/share/dict/american-english

De cette façon, vous pouvez spécifier les limites supérieures et inférieures en même temps.

26. Sélectionner tous les caractères

Vous pouvez utiliser le caractère générique '*' pour sélectionner toutes les occurrences zéro ou plus 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-english

Le premier exemple imprime le mot collection puisque c'est le seul mot qui correspond à "collect" une ou plusieurs fois dans le test.txt dossier. Le dernier exemple correspond à toutes les lignes contenant c suivi de n'importe quel nombre 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 alternatifs. 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 oeil à l'exemple ci-dessous pour comprendre son effet.

$ egrep "[AEIOU]{2}|[aeiou]{2}" /usr/share/dict/american-english

Cette commande indique à grep de faire correspondre toutes les lignes qui contiennent soit 2 voyelles majuscules consécutives, soit des voyelles minuscules.

28. Sélectionnez le modèle pour les caractères alphanumériques correspondants

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/ américain-anglais

Les 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. Caractères spéciaux d'échappement

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 avez besoin de faire correspondre l'un de ces caractères à l'intérieur de votre modèle. Heureusement, les développeurs de grep ont déjà pensé à cela et permettent d'échapper à ces caractères spéciaux en utilisant le backslash "\" .

$ egrep "\-" /etc/passwd

La commande ci-dessus correspond à toutes les lignes de /etc/passwd fichier contre le trait d'union "-" caractère et les imprime. Vous pouvez échapper tout autre caractère spécial en utilisant une barre oblique inverse de cette manière.

30. Répéter les motifs grep

Vous avez déjà utilisé le "*" joker pour sélectionner des chaînes de caractères dans vos modèles. La commande suivante vous montre comment imprimer toutes les lignes qui commencent par des parenthèses et ne contiennent que des lettres et un seul espace. Nous utiliserons "*" pour ce faire.

$ egrep "([A-Za-z ]*)" test.txt

Ajoutez 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 de tous les jours

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 de terminal Linux importantes. 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 coupons les lignes correspondantes avec grep.

$ ls -l ~ | grep "dw"

Étant donné que tous les répertoires de Linux contiennent le modèle drw au 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 /chemin/vers/musique/rep/ | grep ".mp3"

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 directement transmis ces données à 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 en eux. Ne vous en faites pas, vous pouvez toujours grep pour cela.

$ grep -l 'main' /chemin/vers/fichiers/*.c

Par défaut, grep doit coder en couleur la partie correspondante pour vous aider à visualiser facilement vos résultats. Cependant, s'il ne parvient pas à le faire sur votre machine Linux, essayez d'ajouter le –color option à votre commande.

34. Rechercher des hôtes réseau

Le fichier /etc/hosts contient des informations telles que l'adresse IP de l'hôte et le nom d'hôte. Vous pouvez utiliser grep pour trouver 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/hosts

Ne vous inquiétez pas si vous n'obtenez pas le modèle tout de suite. Si vous les décomposez un par un, c'est très facile à comprendre. En fait, ce modèle recherche toutes les correspondances dans la plage 0.0.0.0 et 999.999.999.999. Vous pouvez également effectuer une recherche à l'aide de noms d'hôte.

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 paquet à 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 pour rechercher des informations sur les packages installés sur votre système de la même manière.

36. Trouver 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 d'un système à l'autre.

$ dpkg --list | grep linux-image

Cette commande imprime simplement le résultat de dpkg –list et le transmet à grep. Il correspond ensuite à toutes les lignes pour le modèle donné.

37. Rechercher des informations sur le modèle pour le 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 'modèle'$ grep -i "modèle" /proc/cpuinfo

Dans 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, depuis /proc/cpuinfo est lui-même un fichier, vous pouvez utiliser grep directement dessus comme le montre ce dernier exemple.

38. Trouver les informations du journal

Linux enregistre toutes sortes de journaux dans le répertoire /var pour nous, les administrateurs système. Vous pouvez facilement regrouper des informations utiles à partir de ces fichiers journaux. La commande ci-dessous illustre un exemple simple de ce type.

$ grep -i "cron" /var/log/auth.log

Cette commande inspectera le fichier /var/log/auth.log pour les lignes potentielles contenant des informations sur les travaux Linux CRON. Le -i flag 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 des machines Linux.

$ ps auxww | grep 'guake'

Cette commande imprimera toutes les informations relatives au guake emballer. Essayez avec un autre package si guake n'est pas disponible sur votre machine.

40. Sélectionnez IP valides uniquement

Plus tôt, nous avons utilisé une expression régulière relativement plus simple pour faire correspondre les adresses IP de /etc/hosts dossier. Cependant, cette commande correspondrait également à de nombreuses adresses IP invalides, 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/hosts

La commande ci-dessus n'imprimera aucune adresse IP invalide comme 999.999.999.999.

41. Rechercher dans les fichiers compressés

L'interface zgrep de la commande Linux grep nous permet de rechercher directement des modèles dans des fichiers compressés. Jetez un coup d'œil aux extraits de code suivants pour une meilleure compréhension.

$ gzip test.txt$ zgrep -i "sample" test.txt.gz

Tout d'abord, nous compressons le test.txt fichier à l'aide de gzip, puis de zgrep pour y rechercher le mot sample.

42. Compter le nombre de lignes vides

Vous pouvez facilement compter le nombre de lignes vides dans un fichier à l'aide de grep, comme illustré dans l'exemple suivant.

$ grep -c "^$" test.txt

Depuis test.txt contient 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 compte est imprimé en utilisant le -c option.

43. Trouver plusieurs modèles

Jusqu'à présent, nous nous sommes concentrés sur la recherche d'un modèle unique. L'utilitaire grep permet également aux utilisateurs de rechercher des lignes avec plusieurs modèles en même temps. Jetez un œil aux exemples de commandes ci-dessous pour voir comment cela fonctionne.

$ grep -e 'exemple' -e 'fichier' test.txt$ grep -e 'exemple' test.txt | grep -e 'fichier'$ grep -e 'exemple\| fichier' test.txt

Toutes les commandes ci-dessus imprimeront les lignes contenant à 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 facile de valider les données d'entrée telles que l'adresse IP et les e-mails à l'aide d'expressions régulières grep. La commande suivante correspondra à toutes les adresses e-mail valides.

$ grep -E -o "\b[A-Za-z0-9._%+-][email protected][A-Za-z0-9.-]+\.[A-Za- z]{2,6}\b" /chemin/vers/données

Cette commande est extrêmement efficace et correspond facilement à 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 autres combinaisons de commandes 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électionnez des modèles à partir de fichiers

Vous pouvez sélectionner vos modèles d'expressions régulières pour grep à partir de fichiers prédéfinis assez facilement. Utilisez le -f option pour cela.

$ echo "sample"> fichier$ grep -f fichier test.txt

Nous créons un fichier d'entrée contenant un motif à l'aide de la commande echo. La deuxième commande montre l'entrée de fichier pour grep.

46. Contextes de contrôle

Vous pouvez facilement contrôler le contexte de sortie de grep en utilisant les options -A , -B , et -C . Les commandes suivantes les montrent en action.

$ grep -A2 'fichier' test.txt$ grep -B2 'fichier' test.txt$ grep -C3 'Linux' test.txt

Le premier exemple montre les 2 lignes suivantes après la correspondance, le deuxième exemple montre les 2 précédentes et le dernier exemple montre les deux.

47. Supprimer les messages d'erreur

Le -s L'option 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.txt

Bien qu'il n'y ait pas de fichier nommé testing.txt dans mon répertoire de travail, grep n'émet aucun message d'erreur pour cette commande.

48. Afficher les informations de version

L'utilitaire grep est beaucoup plus ancien que Linux lui-même et remonte aux premiers jours d'Unix. Utilisez la commande suivante si vous souhaitez obtenir les informations de version de grep.

$ grep -V$ grep --version

49. Afficher la page d'aide

La page d'aide de grep contient une liste résumée de toutes les fonctions disponibles. Cela aide à surmonter de nombreux problèmes directement depuis le terminal.

$ grep --help

Cette commande invoquera la page d'aide de grep.

50. Consulter la documentation

La documentation grep est extrêmement détaillée et fournit une introduction complète 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.

$ homme grep

Fin des pensées

Étant donné que vous pouvez créer n'importe quelle combinaison de commandes à l'aide des options CLI robustes de grep, il est difficile d'encapsuler tout ce qui concerne 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. 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 des fichiers. Bien que vous puissiez faire face à de nouveaux obstacles chaque jour, c'est le seul moyen de vraiment maîtriser la commande Linux grep.


Linux
  1. 10 tutoriels de commande Linux pour débutants et experts

  2. Commande Linux wc expliquée pour les débutants (6 exemples)

  3. 8 exemples pratiques de la commande Linux Xargs pour les débutants

  4. 5 exemples pratiques de Head Command sous Linux

  5. Commande grep Linux

Commande ls sous Linux pour lister les fichiers

40 Exemple pratique et productif de commandes Linux df

40 Commande awk pratique et utile sous Linux et BSD

25 Commande mv pratique sous Linux pour les utilisateurs de tous les jours

16 exemples pratiques et utiles de la commande Echo sous Linux

Commandes Linux et Unix Tee pratiques pour l'administrateur Linux