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、あなたの配列がすでにソートされている場合)。