Grep

Grep

Moyen

Introduction

Tu as décroché un emploi dans une bibliothèque locale, où tu aides à organiser sa collection de vieux livres. Les étudiants qui la fréquentent sont souvent à la recherche de citations dont ils ne se souviennent qu'à moitié, pour les citer dans leurs travaux universitaires. Plutôt que de lire chaque livre manuellement, de la première à la dernière page, tu décides de construire un petit outil qui les parcourt à la recherche de ces extraits de citations.

Instructions

Recherche dans des fichiers les lignes qui correspondent à une chaîne recherchée et renvoie toutes les lignes correspondantes.

La commande Unix grep recherche dans des fichiers les lignes qui correspondent à une expression régulière. Ta tâche consiste à implémenter une version simplifiée de la commande grep, qui prend en charge la recherche de chaînes fixes.

La commande grep prend trois arguments :

  1. La chaîne à rechercher.
  2. Zéro ou plusieurs options pour personnaliser le comportement de la commande.
  3. Un ou plusieurs fichiers dans lesquels chercher.

Elle lit ensuite le contenu des fichiers indiqués (dans l'ordre indiqué), trouve les lignes qui contiennent la chaîne recherchée, puis renvoie enfin ces lignes dans l'ordre dans lequel elles ont été trouvées. Lors d'une recherche dans plusieurs fichiers, chaque ligne correspondante est précédée du nom du fichier et d'un deux-points (':').

Options

La commande grep prend en charge les options suivantes :

  • -n Fait précéder chaque ligne de la sortie du numéro de ligne et d'un deux-points (':'), en plaçant le numéro après le nom du fichier (s'il est présent).
  • -l Affiche uniquement les noms des fichiers qui contiennent au moins une ligne correspondante.
  • -i Effectue la correspondance sans tenir compte de la casse.
  • -v Inverse le programme : recueille toutes les lignes qui ne correspondent pas.
  • -x Recherche uniquement les lignes pour lesquelles la chaîne recherchée correspond à la ligne entière.

Parcours PowerShell

Les options changent de nom

PowerShell prend en charge les paramètres de commutateur pour les fonctions, qui se comportent comme les options d'une ligne de commande.

Fidèle à la coutume de PowerShell de donner aux cmdlets et à leurs propriétés des noms détaillés et explicites, les options utilisées dans cet exercice ont elles aussi été renommées pour refléter le langage.

  • Line (-n) : fait précéder chaque ligne de la sortie de son numéro de ligne et de deux-points (« : »), en plaçant le numéro après le nom du fichier (s'il est présent).
  • File (-l) : n'affiche que les noms des fichiers qui contiennent au moins une ligne correspondante.
  • Insensitive (-i) : effectue la comparaison sans tenir compte de la casse.
  • Invert (-v) : inverse le programme, en collectant toutes les lignes qui ne correspondent pas.
  • Whole (-x) : ne cherche que les lignes où la chaîne recherchée correspond à la ligne entière.

Gestion des fichiers

Concentre-toi avant tout sur l'implémentation de la fonction grep, et ne te préoccupe pas d'obtenir correctement le chemin des fichiers.

Cet exercice fournit 3 fichiers texte obligatoires : iliad.txt, midsummer-night.txt et paradise-lost.txt dans la suite de tests ; tu peux accéder à leur contenu avec Get-Content en utilisant le nom du fichier plutôt que le chemin habituel.

Cmdlet

PowerShell dispose bel et bien d'une cmdlet semblable à grep, appelée Select-String, et tu peux en lire davantage ici si ça t'intéresse. Tu ne dois à aucun moment utiliser Select-String dans cet exercice.

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
PowerShell Exercism

Prêt à commencer Grep ?

Inscris-toi sur Exercism pour apprendre et maîtriser PowerShell avec 136 exercices, et un vrai mentorat humain, le tout gratuitement.