当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何使用 PowerShell 从 CSV 获取唯一值?

作者:精品下载站 日期:2024-12-14 05:12:32 浏览:14 分类:玩电脑

如何使用 PowerShell 从 CSV 获取唯一值?


我的一位客户正在处理 CSV 文件,他们需要从该 CSV 文件中查找唯一值。我建议使用PowerShell,并告诉他们一些方法。在本教程中,我将向您解释四种简单且有用的方法来使用 PowerShell 从 CSV 获取唯一值

使用 PowerShell 从 CSV 获取唯一值

PowerShell 提供了各种 cmdlet 来处理 CSV 文件。与其他一些 cmdlet 结合使用,您可以从 PowerShell 中的 CSV 文件获取唯一值。

以下是带有示例的方法。

对于所有方法,我使用以下 CSV 文件,其中包含以下内容。您甚至可以下载 CSV 文件并使用它。

Name,Age
Alice,30
Bob,25
Alice,30
Charlie,35
Bob,25

方法 1:使用 Select-Object -Unique

在 PowerShell 中从 CSV 文件获取唯一值的一种方法是使用带有 -Unique 参数的 Select-Object cmdlet。

这种方法使用起来也非常简单,下面是根据 Name 列提取唯一行的完整 PowerShell 脚本。

# Import the CSV file
$data = Import-Csv -Path "C:\MyFolder\data.csv"

# Select unique rows based on the 'Name' column
$uniqueData = $data | Select-Object -Property Name -Unique

# Output the unique rows
$uniqueData

该脚本将输出:

Name
----
Alice
Bob
Charlie

我使用 VS code 执行了上述脚本,您可以在下面的屏幕截图中看到输出:

[玩转系统] 如何使用 PowerShell 从 CSV 获取唯一值?

方法 2:使用组对象

在 PowerShell 中从 CSV 文件获取唯一值的另一种有效方法是使用 Group-Object cmdlet。

在这里,我们也将使用相同的 data.csv 文件。我们可以按 Name 列对行进行分组,然后选择每个组的第一个实例:

以下是完整的 PowerShell 脚本。

# Import the CSV file
$data = Import-Csv -Path "C:\MyFolder\data.csv"

# Group by 'Name' and select the first instance of each group
$uniqueData = $data | Group-Object -Property Name | ForEach-Object { $_.Group[0] }

# Output the unique rows
$uniqueData

该脚本将输出:

Name   Age
----   ---
Alice  30
Bob    25
Charlie 35

执行上述 PowerShell 脚本后,我得到了所需的输出,您可以在下面的屏幕截图中看到输出:

[玩转系统] 如何使用 PowerShell 从 CSV 获取唯一值?

方法 3:使用 Sort-Object 和 Get-Unique

PowerShell Sort-Object cmdlet 可以与 Get-Unique 结合使用,首先对数据进行排序,然后删除重复项。该方法需要对输入数据进行排序。

使用相同的 data.csv 文件,您可以按 Name 列排序,然后获取唯一值;这是完整的脚本。

# Import the CSV file
$data = Import-Csv -Path "C:\MyFolder\data.csv"

# Sort by 'Name' and then get unique values
$uniqueData = $data | Sort-Object -Property Name | Get-Unique -AsString

# Output the unique rows
$uniqueData

该脚本将输出:

Name   Age
----   ---
Alice  30
Bob    25
Charlie 35

方法四:使用HashSet

以下是在 PowerShell 中使用 HashSet 从 Excel 文件获取唯一值的最终方法。

使用相同的 data.csv 文件,您可以使用 HashSet 来存储唯一值,如下所示:

# Import the CSV file
$data = Import-Csv -Path "C:\MyFolder\data.csv"

# Create a HashSet to store unique names
$hashSet = New-Object System.Collections.Generic.HashSet[string]

# Iterate over each row and add unique names to the HashSet
foreach ($row in $data) {
    [void]$hashSet.Add($row.Name)
}

# Output the unique names
$hashSet

该脚本将输出:

Alice
Bob
Charlie

结论

在本 PowerShell 教程中,我解释了如何使用 PowerShell 从 CSV 文件获取唯一值。您可以使用各种方法,例如 Select-Object -UniqueGroup-ObjectSort-ObjectGet-UniqueHashSet 等。我希望这对您有帮助。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯