如何在 PowerShell 中合併 CSV 文件

  1. CSV 格式
  2. 在 PowerShell 中過濾 .csv 檔案
  3. 在 PowerShell 中獲取每個 .csv 檔案對象
  4. 在 PowerShell 中合併 CSV 檔案的內容
  5. 在 PowerShell 中將合併內容寫入文本檔案
如何在 PowerShell 中合併 CSV 文件

在 PowerShell 中,可以需要合併多個 CSV 檔案並將數據寫入文本檔案。可以使用 Import-CsvExport-Csv Cmdlet 來執行此操作。

CSV 格式

有各種不同目的的檔案格式可用。CSV 使用簡單的結構來存儲數據。

它可以用來在不同的程序之間交換數據。正如其名 CSV(逗號分隔值)所暗示的,數據是用逗號分隔的。

存儲在 CSV 檔案中的信息如下所示。

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

分隔符可以是空格、分號或任何其他字符。

讓我們創建兩個 csv 檔案,我們將通過 PowerShell 將其合併。

CSV 檔案

username.csv 內容:

使用者名稱 CSV 檔案

username2.csv 內容:

username2 CSV 檔案

在 PowerShell 中過濾 .csv 檔案

建議使用 Get-ChildItem Cmdlet 以獲取指定位置的所有 .csv 檔案類型。可以傳遞 -Filter 參數以過濾具有 .csv 擴展名的檔案。

.csv 檔案的文件夾路徑在您的情況下可能會不同。

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

讓我們檢查 $csvFileList 中可用的內容。

$csvFileList

輸出:

在 PowerShell 中篩選 CSV 檔案

在 PowerShell 中獲取每個 .csv 檔案對象

讓我們檢索每個檔案對象及其完整名稱。可以使用 Select-Object Cmdlet 來檢索每個對象及其擴展屬性。

我們將前一步的輸出傳遞給 Select-Object 命令。

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

當您顯示 $csfFilesToImport 變量時,可以看到兩個 CSV 檔案對象都具有完整名稱。

$csfFilesToImport

輸出:

在 PowerShell 中提取每個 CSV 文件對象

在 PowerShell 中合併 CSV 檔案的內容

由於我們獲取了所有的 CSV 檔案,讓我們導入每個檔案的內容。這將輕鬆地將內容合併到具有共同標題行的格式中。

我們可以使用 Import-CSV 來從傳遞的 CSV 檔案內容構建類似表格的對象。

$importedCsvFiles = $csfFilesToImport | Import-Csv
$importedCsvFiles

輸出:

在 PowerShell 中合併 CSV 檔案內容

信息已從提供的兩個 CSV 檔案中合併。

在 PowerShell 中將合併內容寫入文本檔案

我們可以將上述對象轉換為 CSV 字符串並將其保存到文本檔案中。可以使用 Export-Csv Cmdlet。

我們應該使用 Append 參數以確保內容不被替換並附加。

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

輸出:

這應該創建一個名為 merged.txt 的新文本檔案。該檔案的內容將來自上述兩個 CSV 檔案的合併。

將合併內容寫入 PowerShell 中的文本文件

Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
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.

相關文章 - PowerShell CSV