Jak mogę usunąć duplikaty z tablicy PowerShell?
$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
arrays
powershell
Eric Schoonover
źródło
źródło
Get-Unique
(lubgu
), jeśli twoja tablica jest już posortowana.-u
.select -u
Select-Object -Unique
Inną opcją jest użycie
Sort-Object
(którego alias jestsort
, ale tylko w Windows) z-Unique
przełącznikiem, który łączy sortowanie z usuwaniem duplikatów:źródło
Jeśli chcesz być w pełni bombowcem, radzę to:
Wynik:
W ten sposób
Property
parametr jest najpierw używany doTrim()
tworzenia ciągów, więc dodatkowe spacje są usuwane, a następnie wybiera tylko-Unique
wartości.Więcej informacji
Sort-Object
:źródło
Get-Unique
nie działa, ponieważ spacjeDziała to z rozróżnianiem wielkości liter, dzięki czemu usuwa duplikaty ciągów z różnymi wielkościami. Rozwiązał mój problem.
Powyższe wyniki:
źródło
Jeśli lista jest posortowana, możesz użyć polecenia cmdlet Get-Unique :
źródło
Za pomocą mojej metody możesz całkowicie usunąć zduplikowane wartości, pozostawiając wartości z tablicy, które miały tylko liczbę 1. Nie było jasne, czy tego właśnie chciał OP, ale nie mogłem znaleźć przykładu tego rozwiązania w Internecie, więc tutaj jest.
źródło
Niezależnie od tego, czy używasz
SORT -UNIQUE
,SELECT -UNIQUE
czyGET-UNIQUE
od Powershell 2.0 do 5.1, wszystkie podane przykłady dotyczą pojedynczych tablic kolumnowych. Nie udało mi się jeszcze uzyskać tego, aby działał w tablicach z wieloma kolumnami, aby usunąć zduplikowane wiersze, aby pozostawić pojedyncze wystąpienia wiersza we wspomnianych kolumnach lub opracować alternatywne rozwiązanie skryptowe. Zamiast tego te polecenia cmdlet zwróciły tylko wiersze w tablicy, które wystąpiły RAZ w pojedynczym wystąpieniu i zrzuciły wszystko, co miało duplikat. Zazwyczaj muszę ręcznie usunąć duplikaty z końcowego wyniku CSV w programie Excel, aby ukończyć raport, ale czasami chciałbym kontynuować pracę z tymi danymi w programie Powershell po usunięciu duplikatów.źródło