¿Cómo puedo eliminar duplicados de una matriz de PowerShell?
$a = @(1,2,3,4,5,5,6,7,8,9,0,0)
arrays
powershell
Eric Schoonover
fuente
fuente
Get-Unique
(ogu
) si su matriz ya está ordenada.-u
.select -u
Select-Object -Unique
Otra opción es usar
Sort-Object
(cuyo alias essort
, pero solo en Windows) con el-Unique
interruptor, que combina la clasificación con la eliminación de duplicados:fuente
En caso de que quiera ser una prueba de bomba completa, esto es lo que le aconsejaría:
Salida:
Esto usa el
Property
parámetro para primeroTrim()
las cadenas, por lo que los espacios adicionales se eliminan y luego selecciona solo los-Unique
valores.Más información sobre
Sort-Object
:fuente
Get-Unique
no funcionó porque hay espaciosEsto funciona con mayúsculas y minúsculas, por lo que elimina cadenas duplicadas con diferentes casos. Resolvió mi problema.
Los resultados anteriores:
fuente
Si la lista está ordenada, puede usar el cmdlet Get-Unique :
fuente
Con mi método, puede eliminar por completo los valores duplicados, dejándolo con valores de la matriz que solo tenían un recuento de 1. No estaba claro si esto era lo que realmente quería el OP, sin embargo, no pude encontrar un ejemplo de esta solución en línea, así que aquí está.
fuente
Ya sea que esté utilizando
SORT -UNIQUE
,SELECT -UNIQUE
oGET-UNIQUE
de Powershell 2.0 a 5.1, todos los ejemplos dados están en matrices de una sola columna. Todavía tengo que hacer que esto funcione en matrices con múltiples columnas para ELIMINAR filas duplicadas para dejar apariciones únicas de una fila en dichas columnas, o desarrollar una solución de script alternativa. En cambio, estos cmdlets solo han devuelto filas en una matriz que se produjeron UNA VEZ con una aparición singular y volcaron todo lo que tenía un duplicado. Por lo general, tengo que Eliminar duplicados manualmente de la salida CSV final en Excel para finalizar el informe, pero a veces me gustaría seguir trabajando con dichos datos dentro de Powershell después de eliminar los duplicados.fuente