web-dev-qa-db-fra.com

Suppression des valeurs en double d'un tableau PowerShell

Comment puis-je supprimer les doublons d'un tableau PowerShell?

$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
99
Eric Schoonover

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
170
Keith Hill

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
81
Shay Levy
$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
6
Briscomo

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
4
DarkLite1

Si la liste est triée, vous pouvez utiliser la cmdlet Get-Unique :

 $a | Get-Unique
4
Martin Brandl

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.

2

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
1
Will