PowerShell: 配列から重複を削除

PowerShellで配列内にある重複した値を削除する方法を2つ紹介します。 どちらもPowerShellのコマンドレットを使って簡単に重複削除できます。

Select-Objectによる重複削除

Select-Objectに「-Unique」を指定すると配列の重複削除が簡単にできます。

次のコードでは重複した値を持つ配列から、 Select-Objectを使って重複削除を行っています。

$arr = "c", "b", "c", "c", "a", "b"

$arr = $arr | Select-Object -Unique

Write-Host $arr  # c b a

Select-Objectのエイリアス(別名)はselectなので次のように記述しても 同じ結果を得られます。

$arr = "c", "b", "c", "c", "a", "b"

$arr = $arr | select -Unique

Write-Host $arr  # c b a

Get-Uniqueによる重複削除

Get-Uniqueはオブジェクトから重複を取り除くためのコマンドで、 配列の重複削除にも使用できます。 ただしあらかじめデータをソートしておく必要があるので、 先にSort-Objectでソートした結果をGet-Uniqueに渡します。

$arr = "c", "b", "c", "c", "a", "b"

$arr = $arr | Sort-Object | Get-Unique

Write-Host $arr  # c b a

Sort-Objectのエイリアスは「sort」、 Get-Uniqueのエイリアスは「gu」です。

Group-Objectによる重複確認

配列に重複したデータがあるかどうかを確認したい場合、 Group-Objectを使用すると、 「値」と「出現回数」を表示してくれます。

$arr = "c", "b", "c", "c", "a", "b"

$arr | Group-Object -NoElement

# 実行結果
Count Name
----- ----
    1 a
    2 b
    3 c
PowerShell