Détails
Lire un fichier ligne par ligne dans PowerShell
Je veux lire un fichier ligne par ligne dans PowerShell. Plus précisément, je veux lire le fichier en boucle, enregistrer chaque ligne dans une variable de la boucle et effectuer un traitement sur la ligne.
Je connais l'équivalent en Bash :
while read line do
if [[ $line =~ $regex ]]; then
# work here
fi
done < file.txt
Pas beaucoup de documentation sur les boucles PowerShell.
80
3
La documentation sur les boucles dans PowerShell est abondante, et vous pouvez consulter les rubriques d'aide suivantes :
about_For
,about_ForEach
,about_Do
,about_While
.Une autre solution PowerShell idiomatique à votre problème consiste à transmettre les lignes du fichier texte à la cmdlet
ForEach-Object
:Au lieu de faire correspondre les expressions dans la boucle, vous pouvez faire passer les lignes par
Where-Object
pour filtrer uniquement celles qui vous intéressent :Get-Content
a de mauvaises performances ; il essaie de lire le fichier en mémoire en une seule fois.Le lecteur de fichiers C# (.NET) lit chaque ligne une par une
**Meilleures performances
Ou légèrement moins performant
L'instruction
foreach
sera probablement légèrement plus rapide queForEach-Object
(voir les commentaires ci-dessous pour plus d'informations).L'interrupteur tout-puissant fonctionne bien ici :
Sortie :