Wie man CSV-Dateien in PowerShell kombiniert

  1. Das CSV-Format
  2. Filter die .csv-Dateien in PowerShell
  3. Holen Sie sich jedes .csv-Dateiobjekt in PowerShell
  4. Führen Sie den Inhalt von CSV-Dateien in PowerShell zusammen
  5. Schreiben Sie den zusammengeführten Inhalt in eine Textdatei in PowerShell
Wie man CSV-Dateien in PowerShell kombiniert

Es kann eine Anforderung bestehen, mehrere CSV-Dateien zusammenzuführen und die Daten in eine Textdatei in PowerShell zu schreiben. Die Cmdlets Import-Csv und Export-Csv können verwendet werden, um diese Operation durchzuführen.

Das CSV-Format

Es gibt verschiedene Arten von Dateiformaten, die für unterschiedliche Zwecke verfügbar sind. Das CSV verwendet eine einfache Struktur zur Speicherung von Daten.

Es kann verwendet werden, um Daten zwischen verschiedenen Programmen auszutauschen. Wie der Name CSV (Comma-Separated Values) impliziert, sind die Daten durch Kommata getrennt.

Die in einer CSV-Datei gespeicherten Informationen sehen folgendermaßen aus.

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

Das Trennzeichen kann ein Leerzeichen, ein Semikolon oder ein anderes Zeichen sein.

Lassen Sie uns zwei csv-Dateien erstellen, die wir mit PowerShell zusammenführen werden.

CSV-Dateien

Inhalt von username.csv:

Benutzername CSV-Datei

Inhalt von username2.csv:

benutzername2 CSV-Datei

Filter die .csv-Dateien in PowerShell

Es wird empfohlen, das Cmdlet Get-ChildItem zu verwenden, um alle .csv-Dateitypen im angegebenen Speicherort abzurufen. Der Parameter -Filter kann übergeben werden, um die Dateien mit der .csv-Erweiterung zu filtern.

Der Ordnerpfad zu den .csv-Dateien kann in Ihrem Fall unterschiedlich sein.

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

Lassen Sie uns den verfügbaren Inhalt in der $csvFileList überprüfen.

$csvFileList

Ausgabe:

Filtern Sie die CSV-Dateien in PowerShell

Holen Sie sich jedes .csv-Dateiobjekt in PowerShell

Lassen Sie uns jedes Dateiobjekt mit seinem vollständigen Namen abrufen. Das Cmdlet Select-Object kann verwendet werden, um jedes Objekt mit seinen erweiterten Eigenschaften abzurufen.

Wir leiten die Ausgabe des vorherigen Schrittes an den Befehl Select-Object weiter.

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

Wenn Sie die Variable $csfFilesToImport anzeigen, kann man sehen, dass beide CSV-Dateiobjekte mit dem vollständigen Namen verfügbar sind.

$csfFilesToImport

Ausgabe:

Jede CSV-Datei-Objekt in PowerShell abrufen

Führen Sie den Inhalt von CSV-Dateien in PowerShell zusammen

Da wir jetzt alle CSV-Dateien haben, lassen Sie uns den Inhalt jeder Datei importieren. Dies würde den Inhalt mit einer gemeinsamen Kopfzeile einfach zusammenführen.

Wir können Import-CSV verwenden, um tabellenähnliche Objekte aus den gepipeten CSV-Dateiinhalten zu erstellen.

$importedCsvFiles = $csfFilesToImport | Import-Csv
$importedCsvFiles

Ausgabe:

Inhalte von CSV-Dateien in PowerShell zusammenführen

Die Informationen wurden aus den beiden angegebenen CSV-Dateien zusammengeführt.

Schreiben Sie den zusammengeführten Inhalt in eine Textdatei in PowerShell

Wir können die obigen Objekte in CSV-Strings umwandeln und in einer Textdatei speichern. Das Cmdlet Export-Csv steht zur Verfügung.

Wir sollten den Parameter Append verwenden, um sicherzustellen, dass der Inhalt nicht ersetzt, sondern angefügt wird.

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

Ausgabe:

Das sollte eine neue Textdatei mit dem Namen merged.txt erstellen. Der Inhalt dieser Datei würde aus den beiden oben genannten CSV-Dateien zusammengeführt werden.

Schreiben Sie den zusammengeführten Inhalt in eine Textdatei in PowerShell

Genießen Sie unsere Tutorials? Abonnieren Sie DelftStack auf YouTube, um uns bei der Erstellung weiterer hochwertiger Videoanleitungen zu unterstützen. Abonnieren
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.

Verwandter Artikel - PowerShell CSV