如何从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-UNIQUE
Powershell 2.0到5.1,给出的所有示例都在单个列数组上。我还没有使它能够在具有多个列的数组上起作用,以删除重复的行,从而在所述列上留下单个出现的行,或者开发替代的脚本解决方案。相反,这些cmdlet仅返回一次发生的Array中的Rows(具有奇异的出现),并转储具有重复项的所有内容。通常,我必须从Excel的最终CSV输出中手动删除重复项以完成报告,但是有时我想在删除重复项后继续在Powershell中使用所述数据。
Get-Unique
(或gu
)