Como posso remover duplicatas de uma matriz do PowerShell?
$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
arrays
powershell
Eric Schoonover
fonte
fonte
Get-Unique
(ougu
) se sua matriz já estiver classificada.-u
.select -u
Eu usaria isso em uma linha de comando, mas escrito em um código, é sugerido usar o texto PS completo:Select-Object -Unique
Outra opção é usar
Sort-Object
(cujo alias ésort
, mas apenas no Windows) com a-Unique
opção, que combina classificação com remoção de duplicatas:fonte
No caso de você querer ser totalmente comprovado, este é o meu conselho:
Resultado:
Isso usa o
Property
parâmetro para primeiroTrim()
as strings, de modo que os espaços extras são removidos e, a seguir, seleciona apenas os-Unique
valores.Mais informações em
Sort-Object
:fonte
Get-Unique
não funcionou porque os espaçosIsso funciona com diferenciação de maiúsculas e minúsculas, removendo, portanto, strings duplicadas com maiúsculas e minúsculas. Resolveu meu problema.
Os resultados acima:
fonte
Se a lista estiver classificada, você pode usar o cmdlet Get-Unique :
fonte
Com o meu método, você pode remover completamente os valores duplicados, deixando-o com valores da matriz que só tinham uma contagem de 1. Não estava claro se isso era o que o OP realmente queria, mas não consegui encontrar um exemplo dessa solução online, então Aqui está.
fonte
Esteja você usando
SORT -UNIQUE
,SELECT -UNIQUE
ouGET-UNIQUE
do Powershell 2.0 ao 5.1, todos os exemplos dados estão em matrizes de coluna única. Ainda preciso fazer isso funcionar em matrizes com várias colunas para REMOVER linhas duplicadas para deixar ocorrências únicas de uma linha entre essas colunas ou desenvolver uma solução de script alternativa. Em vez disso, esses cmdlets retornaram apenas linhas em uma matriz que ocorreu UMA VEZ com ocorrência singular e despejou tudo que tinha uma duplicata. Normalmente, tenho que remover as duplicatas manualmente da saída CSV final no Excel para concluir o relatório, mas às vezes gostaria de continuar trabalhando com esses dados no Powershell depois de remover as duplicatas.fonte