Leer archivos línea por línea en Windows PowerShell
-
Mejora de la sintaxis del cmdlet
Get-Content
-
Cargando Líneas Específicas Usando
switch
-
Uso de la clase
[System.IO.File]
en PowerShell para leer el archivo línea por línea
En Windows PowerShell, podemos usar el cmdlet Get-Content
para leer archivos de un archivo. Sin embargo, el cmdlet cargará todo el contenido del archivo en la memoria a la vez, lo que fallará o se congelará en archivos grandes.
Para resolver este problema, lo que podemos hacer es leer los archivos línea por línea, y este artículo le mostrará cómo hacerlo.
Antes de comenzar, es mejor si creamos un archivo de texto de muestra con varias líneas. Por ejemplo, he creado un file.txt
que contiene las siguientes líneas.
file.txt
:
one
two
three
four
five
six
seven
eight
nine
ten
Según Microsoft, una expresión regular es un patrón que se utiliza para hacer coincidir el texto. Puede estar formado por caracteres literales, operadores y otras construcciones. Este artículo probará diferentes scripts que involucran una variable estándar llamada Expresiones regulares, denotada por $regex
.
Mejora de la sintaxis del cmdlet Get-Content
Inicialmente hemos discutido que el cmdlet Get-Content
tiene sus fallas cuando estamos cargando un archivo grande, ya que cargará todo el contenido del archivo en la memoria a la vez. Sin embargo, podemos mejorarlo cargando las líneas una a una usando el bucle foreach
.
Código de ejemplo:
foreach($line in Get-Content .\file.txt) {
if($line -match $regex){
Write-Output $line
}
}
Cargando Líneas Específicas Usando switch
Podemos usar la variable $regex
para ingresar líneas específicas en nuestro archivo creando un valor $regex
personalizado y combinándolo en una función de cambio de caso.
Código de ejemplo:
$regex = '^t'
switch -regex -file file.txt {
$regex { "line is $_" }
}
Producción :
line is two
line is three
line is ten
En este ejemplo, hemos definido un valor personalizado de $regex
que solo coincidirá y mostrará líneas si comienza con el carácter t
.
Uso de la clase [System.IO.File]
en PowerShell para leer el archivo línea por línea
Si tiene acceso a la biblioteca .NET, puede usar la clase [System.IO.File]
para leer el contenido de su archivo. Es una excelente alternativa a Get-Content
ya que no necesitará expresiones regulares para manejar archivos línea por línea.
Código de ejemplo:
foreach($line in [System.IO.File]::ReadLines("C:\yourpathhere\file.txt"))
{
Write-Output $line
}
Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.
LinkedInArtículo relacionado - PowerShell File
- Almacene el contenido del archivo de texto en variable usando PowerShell
- Consulta de la última hora de escritura del archivo en PowerShell
- Desbloquear archivos usando PowerShell
- Dividir archivo grande en PowerShell
- Leer archivo CSV línea por línea en PowerShell
- Buscar archivos con extensión en PowerShell