如何从PowerShell阵列中删除重复项?
$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
如何从PowerShell阵列中删除重复项?
$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
Answers:
与开关一起使用Select-Object(别名为select)-Unique;例如:
$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
$a = $a | select -Unique
-u。select -u我会在命令行上使用它,但是用代码编写,建议使用完整的PS措辞:Select-Object -Unique
另一种选择是将开关Sort-Object(其别名为sort,但仅在Windows上)与-Unique开关配合使用,该开关将排序与删除重复项结合在一起:
$a | sort -unique
如果您想得到全面的炸弹证明,这是我的建议:
@('Apples', 'Apples ', 'APPLES', 'Banana') |
Sort-Object -Property @{Expression={$_.Trim()}} -Unique
输出:
Apples
Banana
这使用Property参数首先Trim()输入字符串,因此多余的空格将被删除,然后仅选择-Unique值。
有关更多信息Sort-Object:
Get-Help Sort-Object -ShowWindow
Get-Unique由于空格而无法正常工作
无论您使用的SORT -UNIQUE是SELECT -UNIQUE还是GET-UNIQUEPowershell 2.0到5.1,给出的所有示例都在单个列数组上。我还没有使它能够在具有多个列的数组上起作用,以删除重复的行,从而在所述列上留下单个出现的行,或者开发替代的脚本解决方案。相反,这些cmdlet仅返回一次发生的Array中的Rows(具有奇异的出现),并转储具有重复项的所有内容。通常,我必须从Excel的最终CSV输出中手动删除重复项以完成报告,但是有时我想在删除重复项后继续在Powershell中使用所述数据。
Get-Unique(或gu)