Lesen einer Datei Zeile für Zeile in PowerShell
Ich möchte eine Datei Zeile für Zeile in PowerShell lesen. Genauer gesagt möchte ich eine Schleife durch die Datei ziehen, jede Zeile in einer Variablen in der Schleife speichern und die Zeile verarbeiten.
Ich kenne das Bash-Äquivalent:
while read line do
if [[ $line =~ $regex ]]; then
# work here
fi
done < file.txt
Es gibt nicht viel Dokumentation über PowerShell-Schleifen.
80
3
Es gibt nicht viel Dokumentation über PowerShell-Schleifen.
Die Dokumentation zu Schleifen in PowerShell ist sehr umfangreich, und Sie sollten sich die folgenden Hilfethemen ansehen:
about_For
,about_ForEach
,about_Do
,about_While
.Eine andere idiomatische PowerShell-Lösung für Ihr Problem besteht darin, die Zeilen der Textdatei über die Pipeline an das Cmdlet
ForEach-Object
zu übergeben:Anstelle des Regex-Abgleichs innerhalb der Schleife könnten Sie die Zeilen durch
Where-Object
leiten, um nur die Zeilen herauszufiltern, an denen Sie interessiert sind:Get-Content" hat eine schlechte Leistung; es versucht, die Datei auf einmal in den Speicher zu lesen.
Der C# (.NET) Dateireader liest jede Zeile einzeln ein
Beste Leistung
Oder etwas weniger performant
Die Anweisung
foreach
wird wahrscheinlich etwas schneller sein alsForEach-Object
(siehe Kommentare unten für weitere Informationen).Der allmächtige Schalter funktioniert hier gut:
Ausgabe: