Bagaimana cara menghapus duplikat dari array PowerShell?
$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
Bagaimana cara menghapus duplikat dari array PowerShell?
$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
Jawaban:
Gunakan Select-Object
(alias siapa select
) dengan -Unique
sakelar; misalnya:
$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
$a = $a | select -Unique
-u
. select -u
Saya akan menggunakan ini pada baris perintah, tetapi ditulis dalam kode, disarankan untuk menggunakan kata-kata PS lengkap:Select-Object -Unique
Opsi lainnya adalah menggunakan Sort-Object
(alias sort
, tetapi hanya di Windows) dengan -Unique
sakelar, yang menggabungkan pengurutan dengan penghapusan duplikat:
$a | sort -unique
Jika Anda ingin menjadi bukti bom sepenuhnya, inilah saran saya:
@('Apples', 'Apples ', 'APPLES', 'Banana') |
Sort-Object -Property @{Expression={$_.Trim()}} -Unique
Keluaran:
Apples
Banana
Ini menggunakan Property
parameter untuk pertama Trim()
string, jadi spasi ekstra dihapus dan kemudian memilih hanya -Unique
nilainya.
Info lebih lanjut tentang Sort-Object
:
Get-Help Sort-Object -ShowWindow
Get-Unique
tidak berfungsi karena ruang
$a | sort -unique
Ini berfungsi dengan case-insensitive, oleh karena itu menghapus string duplikat dengan case yang berbeda. Memecahkan masalah saya.
$ServerList = @(
"FS3",
"HQ2",
"hq2"
) | sort -Unique
$ServerList
Keluaran di atas:
FS3
HQ2
Jika daftar diurutkan, Anda dapat menggunakan cmdlet Get-Unique :
$a | Get-Unique
Dengan metode saya, Anda dapat sepenuhnya menghapus nilai duplikat, meninggalkan Anda dengan nilai dari array yang hanya memiliki hitungan 1. Tidak jelas apakah ini yang sebenarnya diinginkan OP, namun saya tidak dapat menemukan contoh solusi ini secara online jadi ini dia.
$array=@'
Bananna
Apple
Carrot
Pear
Apricot
Pear
Bananna
'@ -split '\r\n'
($array | Group-Object -NoElement | ?{$_.count -eq 1}).Name
Baik Anda menggunakan SORT -UNIQUE
, SELECT -UNIQUE
atau GET-UNIQUE
dari Powershell 2.0 hingga 5.1, semua contoh yang diberikan ada di array Kolom tunggal. Saya belum mendapatkan ini berfungsi di Array dengan beberapa Kolom untuk MENGHAPUS Baris Duplikat untuk meninggalkan kejadian tunggal dari Baris di Kolom tersebut, atau mengembangkan solusi skrip alternatif. Sebaliknya, cmdlet ini hanya mengembalikan Baris dalam Array yang terjadi SEKALI dengan kejadian tunggal dan membuang semua yang memiliki duplikat. Biasanya saya harus Menghapus Duplikat secara manual dari keluaran CSV akhir di Excel untuk menyelesaikan laporan, tetapi terkadang saya ingin terus bekerja dengan data tersebut dalam Powershell setelah menghapus duplikat.
Get-Unique
(ataugu
) jika array Anda sudah diurutkan.