es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

PowerShell: Leer datos de un archivo csv, comparar datos de una columna específica y escribir los resultados en un archivo nuevo.

Soy nuevo en PowerShell y me gustaría buscar tu opinión. Tengo un archivo CSV “Entrada” del cual necesito crear un archivo CSV “Salida” realizando lo siguiente:
1. Copiar el contenido del archivo “Entrada” tal cual al archivo “Salida”.
2. Recorrer la columna “ID” y, para cada ID único, copiar la fila y añadirla al archivo “Salida”.

Muestra del archivo de Entrada:

Muestra del archivo de Entrada

Muestra del archivo de Salida:

Muestra del archivo de Salida

¿Es posible hacer esto desde PowerShell?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, esto se puede hacer utilizando PowerShell. Puede lograrlo utilizando los cmdlets Import-Csv y Export-Csv en combinación con bucles y condicionales para comparar y agregar datos.

    Primero, puede importar el archivo CSV entrante utilizando el cmdlet Import-Csv y almacenarlo en una variable.

    $incomingFile = Import-Csv -Path "C:\ruta\al\archivo_entrante.csv"
    

    A continuación, puede utilizar el cmdlet Export-Csv para crear el archivo CSV saliente y escribir los datos entrantes en él tal cual.

    $incomingFile | Export-Csv -Path "C:\ruta\al\archivo_saliente.csv" -NoTypeInformation
    

    Para recorrer la columna “ID” y copiar las filas con IDs únicos, puede utilizar un bucle foreach y una declaración if para verificar si el ID ya ha sido agregado al archivo saliente. Si no lo ha sido, puede agregar la fila al archivo saliente utilizando el cmdlet Add-Content.

    $uniqueIDs = @()
    foreach ($row in $incomingFile) {
        if ($uniqueIDs -notcontains $row.ID) {
            $uniqueIDs += $row.ID
            Add-Content -Path "C:\ruta\al\archivo_saliente.csv" -Value $row
        }
    }
    

    Esto recorrerá cada fila en el archivo entrante, verificará si el ID está en la lista de IDs únicos, lo agregará si no lo está y anexará la fila al archivo saliente.

    En resumen, este script de PowerShell le permitirá crear un archivo CSV saliente que contenga todos los datos del archivo entrante, así como filas únicas basadas en la columna “ID”.

Comments are closed.