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

[玩转系统] 如何使用 PowerShell 从文件中获取唯一行?

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

如何使用 PowerShell 从文件中获取唯一行?


在 PowerShell 中处理文本文件时,我需要从文件中提取唯一的行。我尝试了不同的方法并想与大家分享。在本教程中,我们将检查几种使用 PowerShell 从文件中获取唯一行的方法。

使用 PowerShell 从文件中获取唯一行

PowerShell 是此类文件操作的最佳选择。让我们用一个完整的例子来检查每个方法。

方法 1:使用 Get-Unique Cmdlet

PowerShell Get-Unique cmdlet 旨在将排序列表中的每个项目与下一个项目进行比较,消除重复项,并仅返回每个项目的一个实例。该方法要求首先对输入进行排序。

其工作原理如下:

  1. 读取文件并对内容进行排序: $lines=Get-Content “C:\MyFolder\MyExample.txt” |排序对象
  2. 获取唯一行: $uniqueLines=$lines |获得独特
  3. 将唯一行输出到新文件: $uniqueLines |设置内容“C:\MyFolder\MyExample_unique.txt”

此方法可确保您获得独特的线条,下面是完整的脚本。

$lines = Get-Content "C:\MyFolder\MyExample.txt" | Sort-Object

$uniqueLines = $lines | Get-Unique

$uniqueLines | Set-Content "C:\MyFolder\MyExample_unique.txt"

$uniqueLines

我执行了上面的脚本,它向我显示了控制台中的输出并写入文本文件中。查看下面的屏幕截图。

[玩转系统] 如何使用 PowerShell 从文件中获取唯一行?

方法 2:使用带有 -Unique 参数的 Select-Object

让我向您展示另一种相对简单的方法。在 PowerShell 中,您可以将 Select-Object 与 -Unique 参数结合使用。当我们使用-Unique参数时,我们不需要对输入进行排序。

其工作原理如下:

  1. 读取文件并获取唯一行: $uniqueLines=Get-Content “C:\MyFolder\MyExample.txt” |选择对象-唯一
  2. 将唯一行输出到新文件: $uniqueLines |设置内容“C:\MyFolder\MyExample_unique.txt”

以下是完整的 PowerShell 脚本:

$uniqueLines = Get-Content "C:\MyFolder\MyExample.txt" | Select-Object -Unique
$uniqueLines | Set-Content "C:\MyFolder\MyExample_unique.txt"
$uniqueLines

查看下面的屏幕截图,在我使用 VS code 执行 PowerShell 脚本后,它给出了与上面类似的输出。

[玩转系统] 如何使用 PowerShell 从文件中获取唯一行?

方法三:使用HashSet

如果您正在处理大型文本文件,则可以使用 HashSet 在 PowerShell 中获取唯一行。

这是它的工作原理。

  1. 初始化 HashSet 并读取文件: $hashSet=[System.Collections.Generic.HashSet[string]]::new() $lines=Get-Content "C:\MyFolder\ MyExample.txt"
  2. 将每一行添加到 HashSet: foreach ($line in $lines) { $hashSet.Add($line) |输出为空}
  3. 将唯一行输出到新文件: $hashSet |设置内容“C:\MyFolder\MyExample_unique.txt”

这是完整的脚本。

# Step 1: Initialize the HashSet and read the file
$hashSet = [System.Collections.Generic.HashSet[string]]::new()
$lines = Get-Content "C:\MyFolder\MyExample.txt"

# Step 2: Add each line to the HashSet
foreach ($line in $lines) {
    $hashSet.Add($line) | Out-Null
}

# Step 3: Output the unique lines to a new file
$hashSet | Set-Content "C:\MyFolder\MyExample_unique.txt"

方法 4:使用 Group-Object Cmdlet

让我告诉你最后的方法。

您还可以使用 PowerShell 中的 Group-Object cmdlet 进行分组,然后选择唯一的行。

它的工作原理如下:

  1. 读取文件并按行内容分组: $groupedLines=Get-Content "C:\MyFolder\MyExample.txt" |组对象
  2. 选择唯一行: $uniqueLines=$groupedLines | ForEach-Object { $_.Name }
  3. 将唯一行输出到新文件: $uniqueLines |设置内容“C:\MyFolder\MyExample_unique.txt”

下面是完整的脚本。

# Step 1: Read the file and group by line content
$groupedLines = Get-Content "C:\MyFolder\MyExample.txt" | Group-Object

# Step 2: Select unique lines
$uniqueLines = $groupedLines | ForEach-Object { $_.Name }

# Step 3: Output the unique lines to a new file
$uniqueLines | Set-Content "C:\MyFolder\MyExample_unique.txt"

$uniqueLines

执行上述脚本后,您可以在下面的屏幕截图中看到输出。

[玩转系统] 如何使用 PowerShell 从文件中获取唯一行?

结论

我希望您现在已经完全了解如何使用各种方法(例如 Get-Unique Cmdlet、带有 -Unique 参数的 Select-Object 和 Group)从 PowerShell 中的文件中获取唯一行 -对象 Cmdlet。

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

取消回复欢迎 发表评论:

关灯