Skip to main content

Exemples d'utilisations de la commande Linux grep

Commandes de base Linux - Ep16 - Trier un contenu texte: commande sort (Mai 2025)

Commandes de base Linux - Ep16 - Trier un contenu texte: commande sort (Mai 2025)
Anonim

La commande Linux grep est utilisée comme méthode de filtrage des entrées. GREP signifie Global Regular Expression Printer (imprimante globale d'expressions régulières). Par conséquent, pour pouvoir l'utiliser efficacement, vous devez avoir quelques connaissances sur les expressions régulières.

Dans cet article, vous apprendrez plusieurs exemples qui vous aideront à comprendre la commande grep.

01 sur 09

Comment rechercher une chaîne dans un fichier à l'aide de GREP

Imaginez que vous ayez un fichier texte appelé livres avec les titres de livres pour enfants suivants:

  • Robin des Bois
  • Le petit Chaperon rouge
  • Peter Pan
  • Boucle d'or et les trois ours
  • Blanche Neige Et Les Sept Nains
  • Pinnochio
  • Le chat dans le chapeau
  • Les trois petits cochons
  • Le gruffalo
  • Charlie et la chocolaterie

Pour trouver tous les livres avec le mot "The" dans le titre, utilisez la syntaxe suivante:

grep Les livres

Les résultats suivants seront retournés:

  • Boucle d'or et les trois ours
  • Blanche Neige Et Les Sept Nains
  • Le chat dans le chapeau
  • Les trois petits cochons
  • Le gruffalo
  • Charlie et la chocolaterie

Dans chaque cas, le mot "Le" sera mis en évidence.

La recherche est sensible à la casse, donc si l'un des titres avait "le" au lieu de "Le", il n'aurait pas été renvoyé.

Pour ignorer le cas, vous pouvez ajouter le commutateur suivant:

grep les livres --ignore-case

Vous pouvez également utiliser le commutateur -i comme suit:

grep -i les livres

Continuer la lecture ci-dessous

02 sur 09

Rechercher une chaîne dans un fichier à l'aide de caractères génériques

La commande grep est très puissante. Vous pouvez utiliser une multitude de techniques de filtrage pour filtrer les résultats.

Dans cet exemple, je vais vous montrer comment rechercher une chaîne dans un fichier à l'aide de caractères génériques.

Imaginez que vous ayez un fichier appelé lieux avec les noms de lieu écossais suivants:

AberdeenAberystwythaberlourInverurieinvernessNewburghnouveau cerfnouvelle gallowayglasgowEdinbourg

Si vous voulez trouver tous les endroits avec invers dans le nom, utilisez la syntaxe suivante:

grep inver * places

Le caractère générique astérisque (*) représente 0 ou plusieurs. Par conséquent, si vous avez un lieu appelé Inver ou Inverness, les deux sont renvoyés.

Un autre caractère générique que vous pouvez utiliser est le point (.). Vous pouvez l'utiliser pour faire correspondre une seule lettre.

grep inver.r places

La commande ci-dessus trouverait des endroits appelés invertissement et invariable mais ne trouverait pas invérerie, car il ne peut y avoir qu'un seul caractère générique entre les deux r, comme indiqué par la période unique.

Le caractère générique de période est utile, mais il peut poser problème si vous en avez un dans le texte que vous recherchez.

Par exemple, regardez cette liste de noms de domaine

  • linux.about.com
  • pcsupport.about.com
  • mp3.about.com
  • minecraft.about.com
  • androidgames.about.com
  • netforbeginners.about.com
  • dailylinuxuser.com
  • google.co.uk
  • google.au
  • direct.gov.uk

Pour trouver tout ce qui concerne les .com, vous pouvez simplement utiliser la syntaxe suivante:

grep * about * noms de domaine

La commande ci-dessus tomberait si la liste contenait le nom suivant:

  • everydaylinuxuser.com/about.html

Vous pouvez donc essayer la syntaxe suivante:

noms de domaine grep * about.com

Cela fonctionnerait bien sauf s'il y avait un domaine avec le nom suivant:

à propos de ycom.com

Pour vraiment rechercher le terme about.com, vous devez échapper au point de la manière suivante:

grep * about .com noms de domaine

Le dernier joker à vous montrer est le point d’interrogation qui représente zéro ou un caractère.

Par exemple:

noms de lieux verts

La commande ci-dessus renverrait Aberdeen, Aberystwyth ou même Berwick.

Continuer la lecture ci-dessous

03 sur 09

Rechercher des chaînes au début et à la fin de la ligne à l'aide de grep

Les symboles carat (^) et dollar ($) vous permettent de rechercher des motifs au début et à la fin des lignes.

Imaginez que vous avez un fichier appelé football avec les noms d’équipe suivants:

  • Blackpool
  • Liverpool
  • Manchester City
  • La ville de Leicester
  • Manchester United
  • Newcastle United
  • FC United Of Manchester

Si vous voulez trouver toutes les équipes qui ont commencé avec Manchester, utilisez la syntaxe suivante:

grep ^ équipes de Manchester

La commande ci-dessus renverrait Manchester City et Manchester United mais pas le FC United Of Manchester.

Sinon, vous pouvez trouver toutes les équipes se terminant par United en utilisant la syntaxe suivante:

grep United $ équipes

La commande ci-dessus serait renvoyée à Manchester United et Newcastle United mais pas au FC United Of Manchester.

04 de 09

Compter le nombre de correspondances à l'aide de grep

Si vous ne souhaitez pas renvoyer les lignes qui correspondent à un modèle à l'aide de grep mais que vous voulez simplement savoir combien il en existe, vous pouvez utiliser la syntaxe suivante:

grep -c pattern inputfile

Si le motif était apparié deux fois, le nombre 2 serait renvoyé.

Continuer la lecture ci-dessous

05 de 09

Trouver tous les termes qui ne correspondent pas en utilisant grep

Imaginez que vous ayez une liste de noms de lieux avec les pays énumérés comme suit:

  • Aberdeen Ecosse
  • Glasgow Ecosse
  • Liverpool Angleterre
  • Colwyn Bay
  • Londres, Angleterre

Vous avez peut-être remarqué que colwyn bay n'est associé à aucun pays.

Pour rechercher tous les lieux d'un pays, vous pouvez utiliser la syntaxe suivante:

grep land $ places

Les résultats obtenus seraient tous les lieux sauf pour Colwyn Bay.

Cela ne fonctionne évidemment que pour les endroits qui se terminent par des terres (à peine scientifiques).

Vous pouvez inverser la sélection en utilisant la syntaxe suivante:

grep -v land $ places

Cela permettrait de trouver tous les endroits qui ne se terminent pas par des terres.

06 de 09

Comment faire pour rechercher des lignes vides dans des fichiers à l'aide de grep

Imaginez que vous ayez un fichier d'entrée utilisé par une application tierce qui arrête de lire le fichier lorsqu'il trouve une ligne vide, comme suit:

  • Aberdeen Ecosse
  • inverness ecosse
  • Liverpool Angleterre
  • colwyn bay wales

Lorsque l'application arrive sur la ligne après liverpool, la lecture s'arrête, ce qui signifie que colwyn bay est complètement ratée.

Vous pouvez utiliser grep pour rechercher des lignes vierges avec la syntaxe suivante:

grep ^ $ places

Malheureusement, ce n'est pas particulièrement utile car il ne fait que renvoyer les lignes vides.

Vous pouvez bien sûr obtenir un décompte du nombre de lignes vides afin de vérifier si le fichier est valide comme suit:

grep -c ^ $ places

Toutefois, il serait plus utile de connaître les numéros de ligne qui ont une ligne vide afin de pouvoir les remplacer. Vous pouvez le faire avec la commande suivante:

grep -n ^ $ places

Continuer la lecture ci-dessous

07 de 09

Comment rechercher des chaînes de caractères majuscules ou minuscules à l'aide de grep

En utilisant grep, vous pouvez déterminer quelles lignes d'un fichier ont des caractères majuscules en utilisant la syntaxe suivante:

grep 'A-Z' nom du fichier

Les crochets vous permettent de déterminer la plage de caractères. Dans l'exemple ci-dessus, il correspond à tout caractère compris entre A et Z.

Par conséquent, pour faire correspondre les caractères minuscules, vous pouvez utiliser la syntaxe suivante:

grep 'a-z' nomfichier

Si vous souhaitez faire correspondre uniquement des lettres et non des chiffres ou d'autres symboles, vous pouvez utiliser la syntaxe suivante:

grep 'a-zA-Z' nom de fichier

Vous pouvez faire la même chose avec les nombres comme suit:

grep '0-9' nomfichier 08 de 09

Recherche de motifs répétés à l'aide de grep

Vous pouvez utiliser des accolades {} pour rechercher un motif répétitif.

Imaginez que vous ayez un fichier avec les numéros de téléphone suivants:

  • 055-1234
  • 055-4567
  • 555-1545
  • 444-0167
  • 444-0854
  • 4549-2234
  • x44-1234

Vous savez que la première partie du numéro doit comporter trois chiffres et vous souhaitez rechercher les lignes qui ne correspondent pas à ce modèle.

Dans l'exemple précédent, vous savez que 0-9 renvoie tous les nombres d'un fichier.

Dans ce cas, nous voulons les lignes qui commencent par trois nombres suivis d'un trait d'union (-). Vous pouvez le faire avec la syntaxe suivante:

grep "^ 0-9 0-9 0-9 -" nombres

Comme nous l'avons vu dans les exemples précédents, carat (^) signifie que la ligne doit commencer par le motif suivant.

Le 0-9 recherchera tout nombre compris entre 0 et 9. Comme il est inclus trois fois, il correspond à 3 chiffres. Enfin, un trait d'union indique qu'un trait d'union doit succéder aux trois nombres.

En utilisant les accolades, vous pouvez rendre la recherche plus petite comme suit:

grep "^ 0-9 {3 } -" nombres

La barre oblique échappe au {crochet de manière à ce qu’elle fasse partie de l’expression régulière, mais en substance, elle indique 0-9 {3}, ce qui signifie un nombre compris entre 0 et 9 à trois reprises.

Les accolades peuvent également être utilisées comme suit:

{5,10}{5,}

Le {5,10} signifie que le caractère recherché doit être répété au moins 5 fois mais pas plus de 10 alors que le {5,} signifie que le caractère doit être répété au moins 5 fois, mais il peut être plus que cela.

Continuer la lecture ci-dessous

09 de 09

Utiliser la sortie d'autres commandes en utilisant grep

Jusqu'ici, nous avons examiné la correspondance de modèles dans des fichiers individuels, mais grep peut utiliser la sortie d'autres commandes comme entrée pour la correspondance de modèles.

Un bon exemple consiste à utiliser la commande ps qui répertorie les processus actifs.

Par exemple, exécutez la commande suivante:

ps -ef

Tous les processus en cours sur votre système seront affichés.

Vous pouvez utiliser grep pour rechercher un processus particulier en cours d'exécution comme suit:

ps -ef | grep firefox

Résumé

La commande grep est une commande Linux fondamentale qui vaut la peine d’être apprise, car elle vous facilitera grandement la vie lors de la recherche de fichiers et de processus lors de l’utilisation du terminal.