Comment puis-je supprimer les doublons d'un tableau PowerShell?
$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
Comment puis-je supprimer les doublons d'un tableau PowerShell?
$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
Réponses:
Utilisez Select-Object
(dont l'alias est select
) avec le -Unique
commutateur; par exemple:
$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
$a = $a | select -Unique
-u
. select -u
J'utiliserais ceci sur une ligne de commande, mais écrit dans un code, il est suggéré d'utiliser le libellé PS complet:Select-Object -Unique
Une autre option consiste à utiliser Sort-Object
(dont l'alias est sort
, mais uniquement sous Windows) avec le -Unique
commutateur, qui combine le tri et la suppression des doublons:
$a | sort -unique
Au cas où vous voudriez être complètement bombardé, voici ce que je vous conseillerais:
@('Apples', 'Apples ', 'APPLES', 'Banana') |
Sort-Object -Property @{Expression={$_.Trim()}} -Unique
Production:
Apples
Banana
Cela utilise le Property
paramètre pour commencer par Trim()
les chaînes, donc les espaces supplémentaires sont supprimés, puis ne sélectionne que les -Unique
valeurs.
Plus d'infos sur Sort-Object
:
Get-Help Sort-Object -ShowWindow
Get-Unique
n'a pas fonctionné parce que les espaces
$a | sort -unique
Cela fonctionne avec insensible à la casse, supprimant ainsi les chaînes en double avec des cas différents. J'ai résolu mon problème.
$ServerList = @(
"FS3",
"HQ2",
"hq2"
) | sort -Unique
$ServerList
Les sorties ci-dessus:
FS3
HQ2
Si la liste est triée, vous pouvez utiliser l' applet de commande Get-Unique :
$a | Get-Unique
Avec ma méthode, vous pouvez supprimer complètement les valeurs en double, vous laissant avec des valeurs du tableau qui ne comptaient que 1. Il n'était pas clair si c'était ce que l'OP voulait réellement, mais je n'ai pas pu trouver un exemple de cette solution en ligne, donc C'est ici.
$array=@'
Bananna
Apple
Carrot
Pear
Apricot
Pear
Bananna
'@ -split '\r\n'
($array | Group-Object -NoElement | ?{$_.count -eq 1}).Name
Que vous utilisiez SORT -UNIQUE
, SELECT -UNIQUE
ou GET-UNIQUE
de Powershell 2.0 à 5.1, tous les exemples donnés sont sur des tableaux de colonnes simples. Je n'ai pas encore réussi à faire fonctionner cela sur des tableaux avec plusieurs colonnes pour SUPPRIMER les lignes en double pour laisser des occurrences uniques d'une ligne à travers lesdites colonnes, ou développer une solution de script alternative. Au lieu de cela, ces applets de commande n'ont renvoyé que des lignes dans un tableau qui se sont produites UNE FOIS avec une occurrence singulière et ont vidé tout ce qui avait un doublon. En règle générale, je dois supprimer les doublons manuellement de la sortie CSV finale dans Excel pour terminer le rapport, mais parfois je voudrais continuer à travailler avec lesdites données dans Powershell après avoir supprimé les doublons.
Get-Unique
(ougu
) si votre tableau est déjà trié.