year the source open ise from for downloaded available administrador actualizar powershell powershell-ise

the - powershell ise vs powershell



Leer archivo línea por línea en PowerShell (3)

No hay mucha documentación sobre los bucles de PowerShell.

La documentación sobre los bucles en PowerShell es abundante, y es posible que desee consultar los siguientes temas de ayuda: about_For , about_ForEach , about_Do , about_While .

foreach($line in Get-Content ./file.txt) { if($line -match $regex){ # Work here } }

Otra solución idiomática de PowerShell para su problema es canalizar las líneas del archivo de texto al cmdlet ForEach-Object :

Get-Content ./file.txt | ForEach-Object { if($_ -match $regex){ # Work here } }

En lugar de la coincidencia de expresiones regulares dentro del bucle, puede canalizar las líneas a través de Where-Object para filtrar solo aquellas que le interesan:

Get-Content ./file.txt | Where-Object {$_ -match $regex} | ForEach-Object { # Work here }

Quiero leer un archivo línea por línea en PowerShell. Específicamente, quiero recorrer el archivo, almacenar cada línea en una variable en el ciclo y hacer algo de procesamiento en la línea.

Sé el equivalente de Bash:

while read line do if [[ $line =~ $regex ]]; then # work here fi done < file.txt

No hay mucha documentación sobre los bucles de PowerShell.


El interruptor todopoderoso funciona bien aquí:

''one two three'' > file $regex = ''^t'' switch -regex -file file { $regex { "line is $_" } }

Salida:

line is two line is three


Get-Content tiene un mal rendimiento; intenta leer el archivo en la memoria de una vez.

El lector de archivos C # (.NET) lee cada línea una por una

Mejor rendimiento

foreach($line in [System.IO.File]::ReadLines("C:/path/to/file.txt")) { $line }

O un poco menos eficiente

[System.IO.File]::ReadLines("C:/path/to/file.txt") | ForEach-Object { $_ }

La declaración foreach probablemente será un poco más rápida que ForEach-Object (consulte los comentarios a continuación para obtener más información).