Wie kann ich Duplikate aus einem PowerShell-Array entfernen?
$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
arrays
powershell
Eric Schoonover
quelle
quelle
Get-Unique
(odergu
) verwenden, wenn Ihr Array bereits sortiert ist.-u
.select -u
Ich würde dies auf einer Befehlszeile verwenden, aber in einem Code geschrieben, wird empfohlen, den vollständigen PS-Wortlaut zu verwenden:Select-Object -Unique
Eine andere Option ist die Verwendung
Sort-Object
(deren Alias istsort
, aber nur unter Windows) mit dem-Unique
Schalter, der das Sortieren mit dem Entfernen von Duplikaten kombiniert:quelle
Dies funktioniert ohne Berücksichtigung der Groß- und Kleinschreibung. Daher werden doppelte Zeichenfolgen mit unterschiedlichen Groß- und Kleinschreibung entfernt. Mein Problem gelöst.
Die obigen Ausgaben:
quelle
Für den Fall, dass Sie vollständig bombenbeweis sein wollen, würde ich Folgendes raten:
Ausgabe:
Dies verwendet den
Property
Parameter, um zuerstTrim()
die Zeichenfolgen zu erstellen, sodass zusätzliche Leerzeichen entfernt werden und dann nur die-Unique
Werte ausgewählt werden.Weitere Infos zu
Sort-Object
:quelle
Get-Unique
weil Räume nicht funktioniertenWenn die Liste sortiert ist, können Sie das Cmdlet Get-Unique verwenden:
quelle
Egal , ob Sie mit
SORT -UNIQUE
,SELECT -UNIQUE
oderGET-UNIQUE
von Powershell 2,0-5,1, alle Beispiele gegeben sind auf einzelne Spalten - Arrays. Ich muss dies noch für Arrays mit mehreren Spalten verwenden, um doppelte Zeilen zu entfernen , um einzelne Vorkommen einer Zeile in diesen Spalten zu belassen , oder um eine alternative Skriptlösung zu entwickeln. Stattdessen haben diese Cmdlets nur Zeilen in einem Array zurückgegeben, die EINMAL mit einem einzelnen Vorkommen aufgetreten sind, und alles ausgegeben, was ein Duplikat hatte. Normalerweise muss ich Duplikate manuell aus der endgültigen CSV-Ausgabe in Excel entfernen, um den Bericht fertigzustellen. Manchmal möchte ich jedoch nach dem Entfernen der Duplikate mit diesen Daten in Powershell weiterarbeiten.quelle
Mit meiner Methode können Sie doppelte Werte vollständig entfernen und so Werte aus dem Array erhalten, die nur eine Zählung von 1 hatten. Es war nicht klar, ob dies das ist, was das OP tatsächlich wollte, aber ich konnte online kein Beispiel für diese Lösung finden hier ist es.
quelle