Come combinare file CSV in PowerShell

  1. Il formato CSV
  2. Filtra i file .csv in PowerShell
  3. Recupera ciascun oggetto file .csv in PowerShell
  4. Unisci il contenuto dei file CSV in PowerShell
  5. Scrivi il contenuto unito in un file di testo in PowerShell
Come combinare file CSV in PowerShell

Potrebbe esserci la necessità di unire diversi file CSV e scrivere i dati in un file di testo in PowerShell. I cmdlet Import-Csv e Export-Csv possono essere utilizzati per eseguire questa operazione.

Il formato CSV

Esistono vari tipi di formati di file disponibili per scopi diversi. Il CSV utilizza una struttura semplice per memorizzare i dati.

Può essere utilizzato per scambiare dati tra diversi programmi. Come suggerisce il suo nome CSV (valori separati da virgola), i dati sono separati da una virgola.

Le informazioni memorizzate in un file CSV appaiono simili al seguente.

UserName,Identifier,First Name,Last Name
jak12,1001,Harry,Smith
Rock90,1002,Jeremy,Hamilton
Rick23,1003,Rakesh,Donas
User01,1004,Lokie,Ferguson

Il delimitatore può essere uno spazio, punto e virgola o qualsiasi altro carattere.

Creiamo due file csv che uniremo utilizzando PowerShell.

File CSV

Contenuto di username.csv:

file CSV username

Contenuto di username2.csv:

file CSV username2

Filtra i file .csv in PowerShell

Si consiglia di utilizzare il cmdlet Get-ChildItem per recuperare tutti i tipi di file .csv nella posizione specificata. Il parametro -Filter può essere passato per filtrare i file con estensione .csv.

Il percorso della cartella per i file .csv potrebbe essere diverso nel tuo caso.

$csvFilePath = "D:\csvfiles"
$csvFileList = Get-ChildItem $csvFilePath -Filter *.csv

Controlliamo il contenuto disponibile in $csvFileList.

$csvFileList

Output:

Filtrare i file CSV in PowerShell

Recupera ciascun oggetto file .csv in PowerShell

Recuperiamo ciascun oggetto file con il suo nome completo. Il cmdlet Select-Object può essere utilizzato per recuperare ogni oggetto con le sue proprietà espanse.

Stiamo inviando l’output del passo precedente al comando Select-Object.

$csfFilesToImport = $csvFileList | Select-Object -ExpandProperty FullName

Quando visualizzi la variabile $csfFilesToImport, si può vedere che entrambi gli oggetti file CSV sono disponibili con il nome completo.

$csfFilesToImport

Output:

Recupera ogni oggetto CSV in PowerShell

Unisci il contenuto dei file CSV in PowerShell

Dal momento che abbiamo ottenuto tutti i file CSV, importiamo il contenuto di ciascun file. Questo unirà facilmente il contenuto con una riga di intestazione comune.

Possiamo usare Import-CSV per costruire oggetti simili a tabelle dai contenuti dei file CSV inviati.

$importedCsvFiles = $csfFilesToImport | Import-Csv
$importedCsvFiles

Output:

Unisci il contenuto dei file CSV in PowerShell

Le informazioni sono state unite dai due file CSV forniti.

Scrivi il contenuto unito in un file di testo in PowerShell

Possiamo trasformare gli oggetti sopra in stringhe CSV e salvarle in un file di testo. Il cmdlet Export-Csv è disponibile per l’uso.

Dovremmo utilizzare il parametro Append per garantire che il contenuto non venga sostituito ma aggiunto.

$importedCsvFiles | Export-Csv D:\merged.txt -NoTypeInformation -Append

Output:

Questo dovrebbe creare un nuovo file di testo chiamato merged.txt. Il contenuto di quel file sarebbe unito dai sopra citati file CSV.

Scrivi il contenuto unito in un file di testo in PowerShell

Ti piacciono i nostri tutorial? Iscriviti a DelftStack su YouTube per aiutarci a creare altre guide video di alta qualità. Iscriviti
Migel Hewage Nimesha avatar Migel Hewage Nimesha avatar

Nimesha is a Full-stack Software Engineer for more than five years, he loves technology, as technology has the power to solve our many problems within just a minute. He have been contributing to various projects over the last 5+ years and working with almost all the so-called 03 tiers(DB, M-Tier, and Client). Recently, he has started working with DevOps technologies such as Azure administration, Kubernetes, Terraform automation, and Bash scripting as well.

Articolo correlato - PowerShell CSV