Удаление повторяющихся значений из массива PowerShell



Как удалить дубликаты из массива PowerShell?



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

7 ответов:

использовать Select -uniq например:

$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
$a = $a | select -uniq

другой вариант:

$a | sort -unique
$a | sort -unique

это работает с регистром без учета, поэтому удаление дубликатов строк с разными случаями. Решить мою проблему.

$ServerList = @(
    "FS3",
    "HQ2",
    "hq2"
) | sort -Unique

$ServerList

FS3

HQ2

если список отсортирован, вы можете использовать Get-Unique:

 $a | Get-Unique

в случае, если вы хотите быть полностью бомба доказать, это то, что я бы посоветовал:

@('Apples', 'Apples ', 'APPLES', 'Banana') | 
    Sort-Object -Property @{Expression={$_.Trim()}} -Unique

выход:

Apples
Banana

использует

независимо от того, используете ли вы "SORT-UNIQUE", "SELECT-UNIQUE" или "GET-UNIQUE" от Powershell 2.0 до 5.1, все приведенные примеры относятся к массивам с одним столбцом. Мне еще предстоит заставить это работать в массивах с несколькими столбцами, чтобы удалить повторяющиеся строки, чтобы оставить одиночные вхождения строки в указанных Столбцах или разработать альтернативное решение сценария. Вместо этого эти командлеты возвращают только строки в массиве, который произошел один раз с сингулярным вхождением и сбросил все, что имело дубликат. Обычно мне приходится вручную удалять дубликаты из окончательного вывода CSV в Excel, чтобы закончить отчет, но иногда я хотел бы продолжить работу с указанными данными в Powershell после удаления дубликатов.

С помощью моего метода вы можете полностью удалить повторяющиеся значения, оставив вам значения из массива, который имел только количество 1. Было неясно, если это то, что ОП на самом деле хотел, однако я не смог найти пример этого решения в интернете, так что вот он.

$array=@'
Bananna
Apple
Carrot
Pear
Apricot
Pear
Bananna
'@ -split '\r\n'

($array | Group-Object -NoElement | ?{$_.count -eq 1}).Name

Comments

    Ничего не найдено.