Comment puis-je supprimer les doublons d'un tableau PowerShell?
$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
Utilisation 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
Une autre option consiste à utiliser Sort-Object
(dont l’alias est sort
, mais uniquement sous Windows) avec le-Unique
commutateur, qui combine le tri avec la suppression des doublons:
$a | sort -unique
$a | sort -unique
Cela fonctionne avec les majuscules et minuscules, supprimant par conséquent les doublons avec des cas différents. Résolu mon problème.
$ServerList = @(
"FS3",
"HQ2",
"hq2"
) | sort -Unique
$ServerList
Les sorties ci-dessus:
FS3
HQ2
Au cas où vous voudriez être complètement à la bombe, voici ce que je vous conseillerais:
@('Apples', 'Apples ', 'APPLES', 'Banana') |
Sort-Object -Property @{Expression={$_.Trim()}} -Unique
Sortie:
Apples
Banana
Ceci utilise le paramètre Property
pour commencer par Trim()
les chaînes, de sorte que les espaces supplémentaires sont supprimés, puis ne sélectionne que les valeurs -Unique
.
Plus d'infos sur Sort-Object
:
Get-Help Sort-Object -ShowWindow
Si la liste est triée, vous pouvez utiliser la cmdlet Get-Unique :
$a | Get-Unique
Que vous utilisiez SORT -UNIQUE
, SELECT -UNIQUE
ou GET-UNIQUE
de Powershell 2.0 à 5.1, tous les exemples donnés concernent des tableaux à une seule colonne. Je n'ai pas encore réussi à faire en sorte que cela fonctionne dans des tableaux à plusieurs colonnes pour REMOVE Dupliquer des lignes pour ne laisser qu'une seule occurrence d'une ligne dans lesdites colonnes, ou développer un script alternatif Solution. Au lieu de cela, ces applets de commande ont uniquement renvoyé des lignes dans un tableau qui s'est produit UNE FOIS avec une occurrence singulière et a vidé tout ce qui avait un doublon. En général, je dois supprimer les doublons manuellement de la sortie CSV finale dans Excel pour terminer le rapport, mais je souhaite parfois continuer à utiliser lesdites données dans Powershell après avoir supprimé les doublons.
Avec ma méthode, vous pouvez supprimer complètement les valeurs en double, ce qui vous laisse des valeurs du tableau dont le nombre est égal à 1. Il n’était pas clair si c’était ce que le PO voulait réellement, mais j’ai été incapable de trouver un exemple de cette solution en ligne. C'est ici.
$array=@'
Bananna
Apple
Carrot
Pear
Apricot
Pear
Bananna
'@ -split '\r\n'
($array | Group-Object -NoElement | ?{$_.count -eq 1}).Name