¿Cómo eliminar duplicados de una matriz en PowerShell?
¿Necesita eliminar duplicados de una matriz de PowerShell? En este tutorial de PowerShell, explicaré cómo eliminar duplicados de una matriz en PowerShell usando diferentes métodos y ejemplos.
Para eliminar duplicados de una matriz en PowerShell, utilice el cmdlet Select-Object con el modificador -Unique . Por ejemplo, $array para incluir solo elementos únicos. Este enfoque es eficiente y conciso para obtener una matriz solo con valores distintos
Eliminar duplicados de una matriz en PowerShell
Si es nuevo en la matriz PowerShell, consulte un artículo sobre la matriz PowerShell.
A continuación se muestra un ejemplo de una matriz simple en PowerShell:
$array = "apple", "banana", "apple", "cherry", "banana"En esta matriz, tenemos algunas entradas duplicadas para "manzana" y "plátano". Ahora, le mostraré diferentes métodos para eliminar estos duplicados de esta matriz en PowerShell.
Método 1: usar Select-Object con -Unique
Una de las formas más sencillas de eliminar duplicados de una matriz en PowerShell es mediante el cmdlet Select-Object con el parámetro -Unique.
Así es como puedes usarlo:
$array = "apple", "banana", "apple", "cherry", "banana"
$uniqueArray = $array | Select-Object -Unique
$uniqueArrayEste comando canaliza el $array a Select-Object, que selecciona cada elemento. El parámetro -Unique filtra los duplicados, dejándonos con una matriz de valores únicos.
Mire la captura de pantalla a continuación después de ejecutar el script de PowerShell usando el código VS:
Método 2: usar Sort-Object y Get-Unique
Otro método implica ordenar la matriz usando Sort-Object seguido de Get-Unique. Esto es particularmente útil si desea que la matriz resultante esté ordenada y sea única.
He aquí un ejemplo:
$sortedUniqueArray = $array | Sort-Object -UniqueAlternativamente, puedes usar Get-Unique:
$array = "apple", "banana", "apple", "cherry", "banana"
$sortedArray = $array | Sort-Object
$uniqueSortedArray = $sortedArray | Get-Unique
$uniqueSortedArrayPrimero, ordenamos la matriz y luego canalizamos la matriz ordenada a Get-Unique. El cmdlet Get-Unique compara cada elemento de una lista ordenada con el siguiente, elimina duplicados y devuelve solo una instancia de cada elemento.
Puede ver el resultado en la captura de pantalla a continuación después de ejecutar el script usando el código VS.
Método 3: usar una tabla hash
Para matrices más grandes o cuando el rendimiento es un problema, el uso de una tabla hash puede eliminar duplicados de manera eficiente en PowerShell. Una tabla hash es una estructura de datos que almacena pares clave-valor y no permite claves duplicadas.
Así es como puedes usar una tabla hash para eliminar duplicados:
$hashtable = @{}
foreach ($item in $array) {
$hashtable[$item] = $true
}
$uniqueArray = $hashtable.KeysEn este script, creamos una tabla hash vacía en PowerShell. Luego recorremos cada elemento de la matriz original y lo agregamos a la tabla hash, donde cada elemento se convierte en una clave con un valor de $true. Dado que las tablas hash no pueden tener claves duplicadas, esto elimina efectivamente cualquier duplicado. Finalmente, extraemos las claves de la tabla hash, los elementos únicos de la matriz original.
Método 4: usar LINQ
Para aquellos familiarizados con .NET, PowerShell puede aprovechar las capacidades de consulta integrada en el lenguaje (LINQ) para eliminar duplicados. Este método es más avanzado y adecuado para quienes necesitan más control sobre cómo se procesan los datos.
Aquí hay un ejemplo usando LINQ:
$uniqueArray = [System.Linq.Enumerable]::Distinct([System.Collections.Generic.List[string]]$array)En esta línea de código, utilizamos el método Distinct de la clase System.Linq.Enumerable para recuperar distintos elementos de nuestra matriz, que se convierte en una lista genérica de tipo.
Eliminar duplicados de una matriz multidimensional en PowerShell
Ahora, veamos cómo eliminar duplicados de una matriz multidimensional en PowerShell.
Eliminar duplicados de una matriz multidimensional en PowerShell puede ser más complejo porque Select-Object -Unique no funciona directamente en matrices de matrices. En su lugar, puede utilizar una combinación de lógica de comparación personalizada con el cmdlet Group-Object . A continuación se muestra un ejemplo que elimina duplicados según una propiedad específica de una matriz multidimensional:
# Define a multidimensional array with duplicate sub-arrays based on the first element
$multiArray = @(
@(1, 'apple'),
@(2, 'banana'),
@(1, 'apple'), # duplicate
@(3, 'cherry')
)
# Remove duplicates by grouping on the first element and then selecting the first group occurrence
$uniqueMultiArray = $multiArray | Group-Object { $_[0] } | ForEach-Object { $_.Group[0] }
# Display the unique multidimensional array
$uniqueMultiArray
En este ejemplo, $multiArray es una matriz multidimensional de PowerShell con algunas entradas duplicadas. Usamos Group-Object para agrupar los subarreglos por el primer elemento, y luego, para cada grupo, seleccionamos solo el primer subarreglo usando ForEach-Object { $_.Group[ 0] }. El $uniqueMultiArray contendrá los subarreglos únicos basados en el primer elemento de cada subarreglo.
Este método supone que la definición de "duplicado" se basa en el primer elemento de cada submatriz. Si su definición de duplicados es diferente, deberá ajustar la secuencia de comandos en consecuencia cambiando el bloque de secuencia de comandos { $_[0] } en el cmdlet Group-Object para que coincida. sus criterios de unicidad.
Aquí, puede ver el resultado en la captura de pantalla a continuación después de ejecutar el script de PowerShell usando el código de Visual Studio.
Conclusión
Eliminar duplicados de una matriz en PowerShell se puede lograr mediante varios métodos. Uno de los métodos más sencillos es utilizar Select-Object -Unique para simplificar, mientras que los usuarios más avanzados pueden optar por tablas hash o LINQ para obtener rendimiento y control.
Espero que ahora tengas una idea de cómo eliminar duplicados de una matriz en PowerShell usando varios métodos como:
- Usando Seleccionar-Objeto con -Unique
- Usando Sort-Object y Get-Unique
- Usando una tabla hash
- Usando LINQ


