PowerShell配列から重複する値を削除する


回答:


193

スイッチでSelect-Object(エイリアスはselect)を使用し-Uniqueます。例えば:

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

9
それはあまりにも簡単だった:-(でPowerShellの2あなたも使用することができます。Get-Unique(あるいはgu、あなたの配列がすでにソートされている場合)。
ジョーイ

2
ヨハネス、Get-Uniqueはv1で利用できます:)
Shay Levy

2
かっこいい、これは正常に機能します。メモです-u。簡潔にしたい場合は、に短縮することもできます。select -u私は、コマンドラインでこれを使用しますが、コードで書かれたでしょう、完全なPS文言を使用することを提案しています:Select-Object -Unique
papo

これは1桁でのみ機能しますか?配列の大きなリストの場合、機能しないようです。
EagleDev 2018

85

もう1つのオプションは、並べ替えと重複の削除を組み合わせたスイッチでSort-Object(エイリアスはですがsort、Windowsのみ)を使用する
-Uniqueことです。

$a | sort -unique

2
これにより、次の問題、つまり並べ替え方法も解決されます。ありがとう!
登録ユーザー

2
これも少し速く見えます。
Gneo Pompeo 2014

7

完全に爆弾で証明したい場合は、これをアドバイスします。

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

出力:

Apples
Banana

これはProperty最初Trim()に文字列にパラメーターを使用するため、余分なスペースが削除され、-Unique値のみが選択されます。

の詳細Sort-Object

Get-Help Sort-Object -ShowWindow

1
素晴らしい答え。私の問題は解決しましたが、Get-Uniqueスペースがないため機能しませんでした
Kolob Canyon

7
$a | sort -unique

これは大文字と小文字を区別せずに機能するため、大文字と小文字が異なる重複文字列を削除します。私の問題を解決しました。

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

$ServerList

上記の出力:

FS3
HQ2

これは、複数のメンバーを持つアレイでもうまく機能します
JoeRod


2

私の方法では、重複する値を完全に削除して、カウントが1しかない配列の値を残すことができます。これがOPが実際に必要かどうかは不明でしたが、このソリューションの例をオンラインで見つけることができなかったため、ここにあります。

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

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

2

を使用しているSORT -UNIQUE場合SELECT -UNIQUEでもGET-UNIQUE、Powershell 2.0から5.1までを使用している場合でも、すべての例は単一の列配列についてのものです。複数の列を持つ配列全体でこれを機能させ重複した行を削除して、列全体で行の単一のオカレンスを残すか、別のスクリプトソリューションを開発する必要があります。代わりに、これらのコマンドレットは、単一の発生で一度だけ発生した配列の行のみを返し、重複していたすべてをダンプしました。通常、レポートを完了するには、Excelの最終CSV出力から手動で重複を削除する必要がありますが、重複を削除した後、Powershell内で上記のデータを引き続き使用したい場合があります。


ここで、Where-Objectが役に立ちます。最初に、適切なwhere句を使用してリストを絞り込み、次にパイプを使用してsort-objectにパイプし、ソートする1​​つ以上の列を選択して、sort-objectに-uniqueを指定します。
LPChip
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.