Como Remover Valores Duplicados de um Array do PowerShell
-
Use
Select-Objectpara Remover Valores Duplicados de um Array do PowerShell -
Use
Sort-Objectpara Remover Valores Duplicados de um Array do PowerShell -
Use
Get-Uniquepara Remover Duplicatas de um Array do PowerShell -
Use
Hashtablepara Remover Duplicatas de um Array do PowerShell - Conclusão
Arrays são estruturas de dados fundamentais no PowerShell que permitem armazenar coleções de itens, sejam esses itens do mesmo tipo ou de tipos diferentes. Em vários cenários de script, você pode encontrar a necessidade de eliminar itens duplicados de um array.
Este tutorial apresentará diferentes métodos para remover duplicatas de um array do PowerShell.
Use Select-Object para Remover Valores Duplicados de um Array do PowerShell
O cmdlet Select-Object é usado para selecionar propriedades específicas de um objeto ou conjunto de objetos. Você também pode selecionar objetos exclusivos em uma posição especificada em um array.
O parâmetro -Unique especifica que apenas um membro será selecionado se propriedades e valores idênticos estiverem em objetos. Ele é sensível a maiúsculas e minúsculas, então strings que diferem apenas em caixa de caracteres também são consideradas valores únicos.
Criamos um array $data com itens duplicados com diferentes casos.
$data = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
O seguinte exemplo seleciona valores únicos do array e os salva na variável $data. Como resultado, os elementos duplicados serão removidos de um array.
Comando:
$data = $data | Select-Object -Unique
$data
Saída:
powershell
arrays
Arrays
PowerShell
Ele remove a string duplicada "powershell" mas não remove "PowerShell" porque há uma letra maiúscula na string.
Use Sort-Object para Remover Valores Duplicados de um Array do PowerShell
O cmdlet Sort-Object classifica objetos em ordem crescente ou decrescente com base em seus valores de propriedade. Com o Sort-Object, você também pode usar o parâmetro -Unique para remover as duplicatas dos objetos.
Mas ele não é sensível a maiúsculas e minúsculas, então strings que diferem apenas em caixa de caracteres também são consideradas as mesmas. O seguinte exemplo remove os itens duplicados de um array e os salva na variável $a.
Comando:
$a = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$a = $a | Sort-Object -Unique
$a
Saída:
Arrays
PowerShell
Ele remove "Arrays" e "PowerShell", embora eles diferem apenas pelas caixas de caracteres. Se você quiser tornar o Sort-Object sensível a maiúsculas e minúsculas, pode usar o parâmetro -CaseSensitive.
Comando:
$b = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$b = $b | Sort-Object -Unique -CaseSensitive
$b
Saída:
arrays
Arrays
powershell
PowerShell
Agora, a saída remove apenas o "powershell" uma vez que é a única variável que tem uma duplicata (em sensibilidade a maiúsculas e minúsculas).
Use Get-Unique para Remover Duplicatas de um Array do PowerShell
O cmdlet Get-Unique obtém itens exclusivos de uma lista ordenada. Ele compara cada item em uma lista ordenada com o próximo item, remove duplicatas e retorna apenas um membro de cada item.
Este cmdlet só funciona se a lista estiver ordenada. Você pode usar o cmdlet Sort-Object para classificar objetos por valores de propriedade.
O seguinte exemplo usa o cmdlet Get-Unique para remover itens duplicados do array $sort após classificar os elementos do array com Sort-Object.
Comando:
$c = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$c = $c | Sort-Object | Get-Unique
$c
Saída:
Arrays
arrays
PowerShell
powershell
Nesta saída, o "powershell" é removido.
O Get-Unique é sensível a maiúsculas e minúsculas, então strings que diferem apenas em caixa de caracteres também são consideradas valores únicos. Dessa forma, você pode facilmente remover elementos duplicados de um array no PowerShell.
Use Hashtable para Remover Duplicatas de um Array do PowerShell
O PowerShell permite que você utilize uma Hashtable para remover duplicatas de forma eficiente. Uma Hashtable armazena pares de chave-valor onde as chaves são únicas, e ao criar uma Hashtable e usar os itens do array como chaves, você pode remover automaticamente duplicatas.
O seguinte exemplo inicializa uma Hashtable vazia ($uniqueHash) e então itera através do array, configurando cada item como uma chave na Hashtable. Como as chaves devem ser únicas, as duplicatas são automaticamente eliminadas.
O resultado é armazenado na variável $uniqueArray.
$array = @("powershell", "arrays", "powershell", "Arrays", "PowerShell")
$uniqueHash = @{}
$array | ForEach-Object { $uniqueHash[$_] = $true }
$uniqueArray = $uniqueHash.Keys
$uniqueArray
Saída:
powershell
arrays
Nesta saída, as duplicatas são removidas usando uma Hashtable e imprimem os valores restantes. Por favor, note que usar uma Hashtable para remover duplicatas não considera a sensibilidade de caso dos valores.
Conclusão
No PowerShell, gerenciar valores duplicados em arrays é uma tarefa comum, e este artigo apresentou vários métodos para alcançá-la. Usando os cmdlets Select-Object, Sort-Object e Get-Unique, bem como utilizando Hashtables, você pode personalizar sua abordagem para atender a seus requisitos específicos, seja necessário a remoção de duplicatas sensível ou não a maiúsculas e minúsculas.
