PowerShell配列から重複を削除するにはどうすればよいですか?
$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
PowerShell配列から重複を削除するにはどうすればよいですか?
$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
回答:
スイッチでSelect-Object
(エイリアスはselect
)を使用し-Unique
ます。例えば:
$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
$a = $a | select -Unique
-u
。簡潔にしたい場合は、に短縮することもできます。select -u
私は、コマンドラインでこれを使用しますが、コードで書かれたでしょう、完全なPS文言を使用することを提案しています:Select-Object -Unique
もう1つのオプションは、並べ替えと重複の削除を組み合わせたスイッチでSort-Object
(エイリアスはですがsort
、Windowsのみ)を使用する-Unique
ことです。
$a | sort -unique
完全に爆弾で証明したい場合は、これをアドバイスします。
@('Apples', 'Apples ', 'APPLES', 'Banana') |
Sort-Object -Property @{Expression={$_.Trim()}} -Unique
出力:
Apples
Banana
これはProperty
最初Trim()
に文字列にパラメーターを使用するため、余分なスペースが削除され、-Unique
値のみが選択されます。
の詳細Sort-Object
:
Get-Help Sort-Object -ShowWindow
Get-Unique
スペースがないため機能しませんでした
を使用しているSORT -UNIQUE
場合SELECT -UNIQUE
でもGET-UNIQUE
、Powershell 2.0から5.1までを使用している場合でも、すべての例は単一の列配列についてのものです。複数の列を持つ配列全体でこれを機能させ、重複した行を削除して、列全体で行の単一のオカレンスを残すか、別のスクリプトソリューションを開発する必要があります。代わりに、これらのコマンドレットは、単一の発生で一度だけ発生した配列の行のみを返し、重複していたすべてをダンプしました。通常、レポートを完了するには、Excelの最終CSV出力から手動で重複を削除する必要がありますが、重複を削除した後、Powershell内で上記のデータを引き続き使用したい場合があります。
Get-Unique
(あるいはgu
、あなたの配列がすでにソートされている場合)。