如何在 PowerShell 中合并 CSV 文件

  1. CSV 格式
  2. 在 PowerShell 中过滤 .csv 文件
  3. 在 PowerShell 中获取每个 .csv 文件对象
  4. 在 PowerShell 中合并 CSV 文件的内容
  5. 将合并的内容写入 PowerShell 中的文本文件
如何在 PowerShell 中合并 CSV 文件

可以有一个要求来合并几个 CSV 文件并将数据写入 PowerShell 中的文本文件。可以使用 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