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
別のオプションは Sort-Object
(エイリアスはsort
ですが、Windowsのみ)を使用することです-Unique
スイッチ。ソートと重複の除去を組み合わせます。
$a | sort -unique
$a | sort -unique
これは大文字と小文字を区別しないため、大文字と小文字が異なる重複文字列を削除します。私の問題を解決しました。
$ServerList = @(
"FS3",
"HQ2",
"hq2"
) | sort -Unique
$ServerList
上記の出力:
FS3
HQ2
あなたが完全に爆弾を証明したい場合、これは私がアドバイスするものです:
@('Apples', 'Apples ', 'APPLES', 'Banana') |
Sort-Object -Property @{Expression={$_.Trim()}} -Unique
出力:
Apples
Banana
これはProperty
パラメーターを使用して最初に文字列をTrim()
するため、余分なスペースが削除され、-Unique
値のみが選択されます。
Sort-Object
の詳細:
Get-Help Sort-Object -ShowWindow
リストが並べ替えられている場合は、 Get-Unique コマンドレットを使用できます。
$a | Get-Unique
Powershell 2.0から5.1でSORT -UNIQUE
、SELECT -UNIQUE
またはGET-UNIQUE
を使用しているかどうかにかかわらず、与えられた例はすべて単一の列配列にあります。 REMOVE複数の列を持つ配列全体でこれを機能させて、列の単一の出現を残すために行を複製するか、代替のスクリプトソリューションを開発する必要があります。代わりに、これらのコマンドレットは、1回だけ発生した配列内の行のみを返し、重複したものをすべてダンプしました。通常、Excelの最終CSV出力から重複を手動で削除してレポートを終了する必要がありますが、重複を削除した後、Powershell内で上記のデータを引き続き使用したい場合があります。
私の方法を使用すると、重複する値を完全に削除して、カウントが1のみの配列から値を残すことができます。ここにあります。
$array=@'
Bananna
Apple
Carrot
Pear
Apricot
Pear
Bananna
'@ -split '\r\n'
($array | Group-Object -NoElement | ?{$_.count -eq 1}).Name