Búsqueda de sitios web

Eliminar duplicados de una matriz en PowerShell [3 formas]


Usando Select-Object con el parámetro -Unique

Para eliminar duplicados de una matriz en PowerShell:

  • Utilice el operador de matriz para crear una matriz que tenga valores duplicados.
  • Utilice Select-Object con el parámetro -Unique para seleccionar valores únicos de la matriz que creamos en el paso anterior.

Utilice Seleccionar objeto con parámetro único:

$array = @(2,2,4,4,3,3,6,9,8,9,1,0)
$array = $array | Select-Object -Unique
$array

PRODUCCIÓN :

2
4
3
6
9
8
1
0

Para este código, usamos el operador de matriz (@()) para crear una matriz con valores duplicados y guardamos la matriz en la variable $array usando el operador de asignación (< código>=). Tenga en cuenta que, en PowerShell, los nombres de las variables tienen como prefijo un signo $, por ejemplo, $VariableName.

A continuación, utilizamos el cmdlet Select-Object (se pronuncia command-let, un comando utilizado en Windows PowerShell) con el comando -Unique. parámetro para seleccionar valores únicos de la matriz dada. ¿Cómo? Analicemos el $array=$array | Seleccione el comando Objeto -Único y comprendalo.

Primero, especificamos la matriz de entrada ($array) y utilizamos la tubería (|) para enviar sus resultados al cmdlet Select-Object. Aquí, la tubería se usó para enviar los resultados del comando anterior al siguiente comando.

Luego, el cmdlet Select-Object elige las propiedades dadas del objeto/conjunto de objetos; puede seleccionar los objetos especificados en un índice específico en la matriz, una cierta cantidad de objetos y objetos únicos.

Usamos este cmdlet con el parámetro -Unique para seleccionar valores únicos de la matriz dada. Después de eso, usamos el operador de asignación para actualizar la matriz original.

Recuerde, el parámetro -Unique distingue entre mayúsculas y minúsculas, lo que significa Hello y hello se considerarían valores únicos. Veámoslo en el siguiente ejemplo que contiene elementos de tipo cadena en la matriz.

Utilice Seleccionar objeto con parámetro único:

$array = @("Hello", "hello", "Hi", "Greetings", "Hi")
$array = $array | Select -Unique
$array

PRODUCCIÓN :

Hello
hello
Hi
Greetings

¿Viste? Tenemos Hello y hello, ambos. Esto se debe a que la diferencia en las mayúsculas y minúsculas se considera valores únicos para el parámetro -Unique con el cmdlet Select-Object (cuyo alias es Select ).

Usando Sort-Object con el parámetro -Unique

Para eliminar duplicados de una matriz en PowerShell:

  • Utilice el operador de matriz para crear una matriz con valores duplicados.
  • Utilice Sort-Object con el parámetro -Unique para eliminar valores duplicados de la matriz que creamos en el primer paso.

Utilice Ordenar objeto con parámetro único:

$array = @(2,2,4,4,3,3,6,9,8,9,1,0)
$array = $array | Sort-Object -Unique
$array

PRODUCCIÓN :

0
1
2
3
4
6
8
9

Ya hemos aprendido sobre la creación de matrices usando el operador de matriz, la declaración e inicialización de variables, el operador de asignación, el signo de tubería, la selección de valores únicos y el flujo de ejecución del cmdlet mientras usamos Select-Object.

Este ejemplo de código es similar al que usamos mientras aprendíamos Select-Object; aquí, utilizamos el cmdlet Sort-Object, que puede ordenar los objetos en orden descendente o ascendente según los valores de las propiedades del objeto. ¿Qué significa eso?

Significa que si no especificamos la propiedad de clasificación con Sort-Object, utilizará la propiedad de clasificación predeterminada del primer objeto de entrada. Recuerde, si no existe una propiedad de clasificación predeterminada para el tipo de objeto de entrada, PowerShell comparará los objetos mismos. Puedes leer más sobre esto aquí.

Aquí, las propiedades se ordenarán como que no distinguen entre mayúsculas y minúsculas mientras se trabaja con elementos de matriz de tipo cadena. ¿Cómo? Entendámoslo usando el parámetro -Unique con el cmdlet Sort-Object a continuación.

Utilice Ordenar-Objeto con -Unique -CaseSensitive:

$array = @("Hello", "hello", "Hi", "Greetings", "Hi")
$array = $array | Sort-Object -Unique -CaseSensitive
$array

PRODUCCIÓN :

Greetings
hello
Hello
Hi

El código anterior mostró que el parámetro -Unique considerará Hello y hello como valores únicos si -CaseSensitive Se proporciona el parámetro. Además, los elementos se ordenarán en orden alfabético considerando su primera letra mediante el cmdlet Sort-Object.

Si desea obtener resultados que no distingan entre mayúsculas y minúsculas, omita el parámetro -CaseSensitive y utilice el siguiente comando.

Utilice Ordenar-Objeto con -Único:

$array = @("Hello", "hello", "Hi", "Greetings", "Hi")
$array = $array | Sort-Object -Unique
$array

PRODUCCIÓN :

Greetings
Hello
Hi

También podemos usar Sort de la siguiente manera, un alias del cmdlet Sort-Object.

Utilice Ordenar con -Único:

$array = @("Hello", "hello", "Hi", "Greetings", "Hi")
$array = $array | Sort -Unique
$array

PRODUCCIÓN :

Greetings
Hello
Hi

Usando Get-Unique con Ordenar-Objeto

Para eliminar duplicados de una matriz en PowerShell:

  • Utilice un operador de matriz para crear una matriz que contenga valores duplicados.
  • Utilice Sort-Object para ordenar la matriz dada y Get-Unique para eliminar valores duplicados de la matriz especificada.

Utilice Get-Unique con Sort-Object:

$array = @(2,2,4,4,3,3,6,9,8,9,1,0)
$array = $array | Sort-Object | Get-Unique
$array

PRODUCCIÓN :

0
1
2
3
4
6
8
9

Ya hemos aprendido sobre Ordenar-Objeto en la sección anterior. Aquí, utilizamos el cmdlet Get-Unique con el cmdlet Sort-Object para eliminar valores duplicados de la matriz dada.

Quizás se pregunte por qué se supone que debemos usar el cmdlet Get-Unique con el cmdlet Sort-Object. Esto se debe a que el cmdlet Get-Unique selecciona valores únicos si la matriz está ordenada. Entonces, ¿cómo funciona el comando $array=$array | Ordenar-Objeto | ¿Se ejecutó Get-Unique?

Primero, especificamos la matriz de entrada ($array) y sus resultados se reenviaron al cmdlet Sort-Object mediante un signo de tubería. Luego, el cmdlet Sort-Object ordenó la matriz de entrada en orden ascendente, que era la propiedad de clasificación predeterminada de $array. Luego, usamos otra tubería para reenviar la matriz ordenada al cmdlet Get-Unique.

Ahora, el cmdlet Get-Unique comparó cada elemento de la matriz ordenada proporcionada con el siguiente, eliminó los valores idénticos y devolvió una instancia solo para cada elemento. Finalmente, se asignaron valores únicos ordenados al $array usando el operador de asignación (=).

Al igual que el parámetro -Unique, Get-Unique también distingue entre mayúsculas y minúsculas, lo que significa que las cadenas con una diferencia en las mayúsculas y minúsculas se considerarán valores únicos. Vea el siguiente ejemplo para una demostración.

Utilice Get-Unique con Sort-Object:

$array = @("Hello", "hello", "Hi", "Greetings", "Hi")
$array = $array | Sort-Object | Get-Unique
$array

PRODUCCIÓN :

Greetings
Hello
hello
Hi

Se trata de cómo eliminar duplicados de Array en PowerShell.

Artículos relacionados