Búsqueda de sitios web

Leer archivo CSV línea por línea en PowerShell


PowerShell es un lenguaje de secuencias de comandos versátil que brinda soporte sólido para trabajar con archivos CSV (separados por comas). Su comando Import-CSV se utiliza para importar archivos CSV y el cmdlet ForEach-Object para leer un archivo CSV línea por línea en PowerShell.

Leer archivos CSV línea por línea en PowerShell es útil para procesar archivos grandes como registros y CSV o aplicar lógica personalizada a cada fila.

En este artículo, analizaremos cómo leer un archivo CSV línea por línea en PowerShell utilizando los cmdlets Import-CSV y ForEach-Object con ejemplos prácticos.

Importar archivos CSV en PowerShell

El cmdlet Import-CSV en PowerShell se utiliza para importar un archivo CSV.

# Import csv file from the specified path
$teamInfo = Import-Csv -Path D:\PS\team_info.csv

# Print the $teamInfo variable to check data available in csv file
$teamInfo

En el script de PowerShell anterior, el cmdlet Import-CSV leerá el archivo y almacenará su contenido en la variable $teamInfo.

El resultado del script después de leer el archivo CSV es:

PS C:\> $teamInfo = Import-Csv -Path D:\PS\team_info.csv                                                                PS C:\>                                                                                                                 

PS C:\> $teamInfo                                                                                                       
Group Name Years
----- ---- -----
Dev   Tom  4
Sale  Aron 5


PS C:\>   

Leer archivos CSV línea por línea

Para leer el archivo CSV línea por línea en PowerShell, usaremos el cmdlet Import-CSV para leer el contenido del CSV y el cmdlet ForEach-Object para iterar a través del filas.

# Import csv file from the specified path
$teamInfo = Import-Csv -Path D:\PS\team_info.csv

$teamInfo | ForEach-Object {
        # Store the individual row in $row
        $row = $_
        Write-Host "Group Name:$($row.Group), Name: $($row.Name)"
        
}

En el script de PowerShell anterior, el comando Import-CSV lee el archivo CSV y almacena el contenido en la variable $teamInfo. Los datos CSV en una variable se canalizan a través del operador de canalización (|) al ForEach-Object para iterar a través de las filas para su posterior procesamiento.

El resultado del script anterior después de leer el archivo CSV línea por línea es:

PS D:\PS> # Import csv file from the specified path
$teamInfo = Import-Csv -Path D:\PS\team_info.csv

$teamInfo | ForEach-Object {
        # Store the individual row in $row
        $row = $_
        Write-Host "Group Name:$($row.Group), Name: $($row.Name)"
        
}
Group Name:Dev, Name: Tom
Group Name:Sale, Name: Aron

Filtrar filas específicas de un archivo CSV

Consideremos un ejemplo para leer un archivo CSV grande línea por línea para filtrar filas de un archivo que contiene un valor específico en una columna /específica.

# Import csv file from the specified path
$teamInfo = Import-Csv -Path D:\PS\team_info.csv

$teamInfo | ForEach-Object {
        # Check if the Group column contains "Dev" value
        if ($_.Group -eq "Dev") 
        {
            Write-Host "Dev Team Member Name: $($_.Name)"
        }
        
}

En el script de PowerShell anterior, el comando Import-CSV lee un archivo CSV y lo almacena en la variable $teamInfo. El comando ForEach-Object itera a través de las filas y filtra las filas donde la columna Group en CSV contiene el valor 'Dev'.

El resultado del script anterior después de filtrar filas específicas de un archivo CSV es:

PS D:\PS> # Import csv file from the specified path
$teamInfo = Import-Csv -Path D:\PS\team_info.csv

$teamInfo | ForEach-Object {
        
        if ($_.Group -eq "Dev") {
        Write-Host "Dev Team Member Name: $($_.Name)"
    }
        
        
}
Dev Team Member Name: Tom

PS D:\PS> 

Consejo interesante: ¡Cómo utilizar el comando Exportar-CSV para exportar a un archivo CSV en PowerShell!

Conclusión

Espero que el artículo anterior sobre cómo leer archivos CSV línea por línea en PowerShell usando los cmdlets Import-CSV y ForEach-Object le resulte útil.

Puede encontrar más temas sobre los comandos de PowerShell Active Directory y los conceptos básicos de PowerShell en la página de inicio de ShellGeek.

Artículos relacionados