2009-09-08 21 views

risposta

138

Usa Select -uniq es .:

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

È stato troppo semplice :-(In PowerShell 2 è anche possibile utilizzare 'Get-Unique' (o' gu') se l'array è già ordinato. – Joey

+2

Johannes, Get-Unique è disponibile in v1 :) –

62

Un'altra opzione:

$a | sort -unique 
+1

risolve anche il mio prossimo problema che è come faccio a risolverlo. Grazie! –

+1

Anche questo sembra un po 'più veloce. –

2

Se la lista è ordinata, è possibile utilizzare il cmdlet Get-Unique:

$a | Get-Unique 
+2

Richiede la lista da ordinare in anticipo –

3
$a | sort -unique 

Questo funziona con case-insensitive, quindi rimuovendo le stringhe duplicate con casi diversi. Risolto il mio problema

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

$ServerList 

FS3 

HQ2 
1

Nel caso in cui si desidera essere pienamente bombardare dimostrare, questo è quello che vorrei consigliare:

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

uscita:

Apples 
Banana 

Questo utilizza il parametro Property alla prima Trim() le stringhe, quindi gli spazi extra vengono rimossi e quindi seleziona solo i valori -Unique.

Maggiori informazioni Sort-Object:

Get-Help Sort-Object -ShowWindow 
+0

Risposta stupenda. Risolto il mio problema, 'Get-Unique' non ha funzionato perché gli spazi –

+0

Sei il benvenuto, lieto che abbia aiutato :) – DarkLite1

0

Sia che si sta utilizzando "SORT Esclusivo", "SELECT Esclusivo" o "GET-UNICO" da Powershell 2,0-5,1, tutti gli esempi forniti sono array di colonne singole. Devo ancora farlo funzionare su Array con più colonne per RIMUOVERE le righe duplicate per lasciare singole occorrenze di una riga su dette colonne o sviluppare una soluzione di script alternativa. Invece questi cmdlet hanno restituito solo righe in una matrice che si è verificata UNA VOLTA con occorrenza singolare e scaricato tutto ciò che aveva un duplicato. In genere devo rimuovere manualmente i duplicati dall'output CSV finale in Excel per completare il report, ma a volte vorrei continuare a lavorare con tali dati in Powershell dopo aver rimosso i duplicati.