Leggere il file riga per riga in PowerShell
Voglio leggere un file riga per riga in PowerShell. In particolare, voglio fare un ciclo attraverso il file, memorizzare ogni riga in una variabile nel ciclo, e fare qualche elaborazione sulla linea.
Conosco l'equivalente di Bash:
while read line do
if [[ $line =~ $regex ]]; then
# work here
fi
done < file.txt
Non c'è molta documentazione sui loop di PowerShell.
80
3
Non c'è molta documentazione sui loop di PowerShell.
La documentazione sui cicli in PowerShell è abbondante, e potresti voler controllare i seguenti argomenti di aiuto:
about_For
,about_ForEach
,about_Do
,about_While
.Un'altra soluzione idiomatica di PowerShell al tuo problema è quella di incanalare le righe del file di testo alla cmdlet
ForEach-Object
:Invece di far corrispondere la regex all'interno del ciclo, si potrebbe far passare le linee attraverso
Where-Object
per filtrare solo quelle a cui si è interessati:Get-Content
ha cattive prestazioni; cerca di leggere il file in memoria tutto in una volta.Il lettore di file C# (.NET) legge ogni riga una per una
Migliori prestazioni
O leggermente meno performante
L'istruzione
foreach
sarà probabilmente leggermente più veloce diForEach-Object
(vedere i commenti qui sotto per maggiori informazioni).L'interruttore onnipotente funziona bene qui:
Output: