Utiliser les cmdlets PowerShell pour apprendre les bases : comment récupérer du texte dans des fichiers texte et comment trouver du texte dans des fichiers texte.
L’une des tâches les plus courantes qu’un professionnel de l’informatique doit effectuer est soit de créer, lire ou modifier des fichiers texte d’une manière ou d’une autre. Les fichiers texte sont représentés dans des milliers de formats différents, du simple fichier TXT au XML en passant par divers formats propriétaires. Comme les fichiers texte peuvent être structurés de très nombreuses façons, les fournisseurs ont adopté le simple fichier texte comme moyen de définir des scripts, de stocker des valeurs de configuration, des requêtes SQL et bien d’autres choses encore. La seule différence structurelle entre un fichier TXT et un fichier SQL, par exemple, est simplement l’extension du fichier. Le contenu n’est que du texte structuré d’une manière différente et prédéfinie.
PowerShell a de nombreuses façons de gérer tous ces types de fichiers texte, mais dans cet article, nous allons nous en tenir à l’approche la plus générique : Nous allons nous concentrer sur la lecture et le texte non structuré. Cela signifie qu’il n’y aura pas de fichiers XML, pas de fichiers de requêtes SQL, ni même de scripts PowerShell. Nous nous concentrerons sur deux sujets :
- Comment récupérer du texte dans des fichiers texte.
- Comment trouver du texte dans des fichiers texte.
Comment récupérer du texte dans des fichiers texte
L’une des tâches les plus faciles est de récupérer tout le texte d’un fichier texte existant. Pour la plupart des fichiers texte, un scripteur PowerShell peut utiliser la cmdlet Get-Content. La cmdlet Get-Content est une cmdlet PowerShell très populaire qui récupère tout le texte d’un fichier texte spécifié par le paramètre Path.
Dans sa forme la plus simple, vous pouvez passer le paramètre Path avec le chemin d’accès à un fichier texte comme argument à la cmdlet Get-Content. Disons que j’ai un fichier appelé MonTexte.txt. Dans ce fichier texte, j’ai les trois lignes indiquées ci-dessous et j’aimerais obtenir le contenu de MyText.txt avec un script PowerShell.
Pour ce faire, je peux utiliser Get-Content avec le paramètre Path.
Vous verrez que le résultat était le contenu entier de MyText.txt. Mais que faire si vous vouliez juste voir un numéro de ligne particulier ? Par défaut, Get-Content lit chaque ligne d’un fichier texte et crée un tableau comme sortie avec chaque ligne du texte comme élément de ce tableau. Cela signifie que je peux facilement sélectionner les différents éléments de ce tableau en spécifiant le numéro d’index du tableau. Dans cet exemple, le numéro d’index du tableau est égal au numéro de ligne du fichier texte.
Dans l’exemple ci-dessus, je vous montre que le résultat de Get-Content est un type de System.Array et qu’en utilisant les numéros d’index entre parenthèses, je peux choisir les lignes que je veux voir en sortie sur ma console. Si vous n’êtes pas familier avec les tableaux et leur schéma de numérotation, sachez que le tout premier élément d’un tableau commence par un zéro. C’est pourquoi je suis capable d’utiliser le numéro un pour choisir la deuxième ligne et le numéro deux pour choisir la troisième ligne. Il est important de s’en souvenir.
Comment trouver du texte dans les fichiers texte
Une fois que vous êtes capable de comprendre comment trouver tout le texte dans les fichiers texte ou certains numéros de ligne, une autre tâche populaire est de trouver du texte spécifique à l’intérieur des fichiers eux-mêmes. Il existe plusieurs façons de le faire, mais la plus simple est d’utiliser la cmdlet Where-Object. La cmdlet Where-Object est une cmdlet populaire qui vous permet de » filtrer » diverses informations à partir de la sortie d’autres cmdlets ; dans cet exemple, il s’agit de filtrer les infos de la cmdlet Get-Content.
En utilisant notre fichier texte précédent comme exemple, disons que je veux voir si ce fichier texte contient les mots » fichier texte » ensemble dans celui-ci. Pour ce faire, je vais utiliser Where-Object.
Lorsque j’utilise Where-Object, je dois utiliser la variable $_. Il s’agit d’une variable spéciale dans PowerShell connue sous le nom de variable pipeline. Dans cet exemple, elle représente chaque ligne du fichier texte telle qu’elle provient de Get-Content. J’utilise ensuite l’opérateur like et des caractères génériques pour voir si la chaîne « text file » existe dans l’une des lignes du fichier texte. Il semble qu’il ait trouvé deux lignes correspondant à la chaîne de caractères.
Si vous souhaitez en savoir plus sur la recherche de texte dans les fichiers texte, je vous suggère de vous pencher sur les opérateurs de comparaison de PowerShell. L’utilisation de l’opérateur match, par exemple, utilise le regex, qui est beaucoup plus puissant que l’opérateur like et qui vous permet de trouver à peu près n’importe quel motif auquel vous pouvez penser dans un fichier texte.
La recherche de texte dans un fichier texte se fait par l’intermédiaire d’un opérateur de comparaison.