grep

Commande grep Linux

Commande grep Linux
Grep est l'un des outils les plus pratiques que vous puissiez avoir à votre disposition. Cet utilitaire de ligne de commande effectue une recherche dans les ensembles de données en texte brut. Grep est en fait un acronyme pour "grechercher globalement un rrégulier expression et prouille". Grep a commencé son voyage en tant que membre de la famille UNIX. Au fil du temps, il est désormais disponible sur toutes les plates-formes populaires telles que Linux, Mac, BSD et même Windows!

Avez-vous déjà utilisé grep? La plupart du temps, l'astuce de base de grep peut faire la plupart du travail. Cependant, grep offre de nombreuses façons d'effectuer la recherche et d'affiner la sortie vers une version plus utilisable. Dans cet article, examinons l'utilisation de la commande grep.

Utilisation de Grep

Vérification de l'existence

Si vous utilisez n'importe quelle sorte de distribution Linux, alors vous avez déjà installé grep. Exécutez la commande suivante dans le terminal.

grep --version

Cette commande est utilisée pour afficher la version de grep actuellement installé. Maintenant, nous avons besoin d'un fichier de démonstration. Dans mon cas, je vais générer un fichier texte qui inclut tous les packages installés sur mon système.

Notions de base

L'utilisation de base de grep suit la structure suivante.

grep

Ou, pour une meilleure compréhension, utilisez celui-ci.

grep -e -F

Dans ce cas, grep effectuera une recherche dans le fichier et imprimera toutes les lignes qui incluent le motif (terme de recherche).

grep python ~/Desktop/PackageList.SMS

Grep a recherché le fichier « PackageList.txt" j'ai généré plus tôt et imprimé toutes les lignes qui incluent "python".

Cette même opération peut être effectuée d'une autre manière. Découvrez l'exemple suivant.

chat ~/Desktop/PackageList.txt | python grep

Ici, en utilisant la commande "cat", j'ai envoyé le contenu du fichier "PackageList.txt" à grep. En utilisant la sortie de cat, grep a effectué la recherche et imprimé les lignes contenant le terme de recherche.

Maintenant vient une chose amusante. Vous pouvez littéralement empiler plusieurs commandes grep comme ça.

chat ~/Desktop/PackageList.txt | grep - | grep p | python grep

Le premier grep filtre jusqu'aux lignes avec un trait d'union, le second filtre jusqu'aux lignes avec p et le dernier grep filtre jusqu'aux lignes avec python. logique?

Sensibilité à la casse

Lors d'une recherche, la sensibilité à la casse est une question majeure. Par défaut, grep est sensible à la casse.

Par exemple, la recherche de "Python" n'affichera aucun résultat.

chat ~/Desktop/PackageList.txt | grep Python

Pour rendre grep "insensible à la casse", ajoutez l'option suivante.

chat ~/Desktop/PackageList.txt | grep -i Python

Recherche de fichier

Disons que vous avez un répertoire avec de nombreux fichiers texte. Votre objectif est d'identifier le(s) fichier(s) contenant ou non un motif (terme de recherche).

Je trouve cette méthode très utile lors de la recherche dans une pile de fichiers journaux. Comme je n'ai pas le temps d'ouvrir et de vérifier chaque fichier manuellement, je dois faire le travail à ma place.

Pour lister les fichiers contenant la correspondance, utilisez le drapeau "-l".

grep -l /recherche/répertoire/*

Comme le résultat le suggère, le terme « python » est présent dans les 3 fichiers présents dans le répertoire « Desktop ».

Pour lister les fichiers sans aucune correspondance, utilisez le drapeau "-L".

grep -L /recherche/répertoire/*

"Aucune concordance.txt" est le seul fichier qui ne contient pas le terme "python".

Recherche inversée

Le comportement par défaut de grep est d'imprimer uniquement les lignes avec le motif correspondant, à droite? Il est temps d'inverser le processus. Cette fois, nous imprimerons uniquement les lignes SANS le motif correspondant.

Il suffit de passer l'option "-v" à grep.

chat ~/Desktop/PackageList.txt | grep -i -v Python

Impression des lignes avant/après le match

Par défaut, grep n'imprimera que la ligne qui correspond au modèle de recherche. En utilisant cette technique, vous pouvez également dire à grep d'imprimer des lignes avant/après le match.

Pour imprimer les lignes avant le match, utilisez la structure suivante.

grep -B

Ici, 5 est la ligne de nombre que grep imprimera AVANT la ligne correspondante.

Pour imprimer les lignes après le match, utilisez la suivante.

grep -A

Que diriez-vous d'imprimer à la fois avant et après la ligne correspondante? Dans ce cas, utilisez le drapeau "-C".

grep -C

Numéro de ligne

Lorsque grep affiche la sortie, il ne mentionne pas le numéro de ligne. Pour le(s) numéro(s) de ligne associé(s), utilisez l'indicateur "-n".

grep -n

Un seul mot

Si le drapeau "-w" est utilisé, grep traitera le motif comme un mot entier.

grep -w

Limitation de la recherche grep

Grep permet de spécifier le nombre de lignes à rechercher dans le fichier. Cette méthode est utile si vous avez affaire à un gros fichier (comme le journal système). Utilisez le drapeau "-m".

grep -m

Recherche récursive

C'est l'une des fonctionnalités les plus utiles offertes par grep pour une utilisation intensive. Grep peut rechercher récursivement un répertoire et trouver toutes les correspondances de tous les fichiers auxquels il est confronté.

grep -R

Ou alors,

grep -r

Je trouve souvent que j'utilise cette fonction récursive avec l'indicateur "-l".

Mode silencieux

Grep peut être exécuté en mode « silencieux ». Lors de l'exécution en mode "silencieux", grep n'imprimera aucune sortie sur le terminal. Au lieu de cela, il renverra 0 (au moins, une correspondance a été trouvée) ou 1 (aucune correspondance trouvée).

grep -q
écho $?

Regex

Grep permet également les recherches regex (expression régulière). Cela ajoute un tout nouveau niveau de complexité et de facilité d'utilisation de grep en tant qu'outil de recherche.

Par exemple, vous pouvez utiliser des crochets pour rechercher à la fois « trop » et « deux » en même temps.

chat ~/Bureau/gpl-3.0.txt | grep deux

Cet exemple suivant n'imprimera la ligne que si la correspondance se produit au tout début de la ligne.

grep ^GNU ~/Desktop/gpl-3.0.SMS

Quant à faire correspondre la fin, utilisez celle-ci.

vous grep$ ~/Bureau/gpl-3.0.SMS

Si vous souhaitez utiliser Perl regex, utilisez le drapeau "-P". Il traitera le motif comme une regex Perl.

grep -P

Dernières pensées

Grep offre des tonnes de façons de personnaliser la fonction de recherche. La disponibilité de regex ouvre un tout nouvel horizon pour l'utilisation potentielle de grep. Ce qui est cool, c'est que vous pouvez utiliser à la fois les regex générales et Perl ; celui avec lequel vous vous sentez à l'aise.

Pour l'explication la plus détaillée, consultez toujours la page de manuel.

homme grep

Acclamations!

Comment booster les FPS sous Linux?
FPS signifie Images par seconde. La tâche du FPS est de mesurer la fréquence d'images dans les lectures vidéo ou les performances de jeu. En termes si...
Meilleurs jeux de laboratoire d'applications Oculus
Si vous êtes propriétaire d'un casque Oculus, vous devez être au courant du chargement latéral. Le chargement latéral est le processus d'installation ...
Top 10 des jeux à jouer sur Ubuntu
La plate-forme Windows a été l'une des plates-formes dominantes pour les jeux en raison du pourcentage énorme de jeux qui se développent aujourd'hui p...