Búsqueda de sitios web

¿Cómo obtener líneas únicas de un archivo usando PowerShell?


Cuando trabajaba con archivos de texto en PowerShell, tenía el requisito de extraer líneas únicas de un archivo. Probé diferentes métodos y pensé en compartirlos contigo. En este tutorial, comprobaremos varios métodos para obtener líneas únicas de un archivo usando PowerShell.

Obtenga líneas únicas de un archivo usando PowerShell

PowerShell es la mejor opción para este tipo de operación de archivos. Comprobemos cada método con un ejemplo completo.

Método 1: uso del cmdlet Get-Unique

El cmdlet Get-Unique de PowerShell está diseñado para comparar cada elemento de una lista ordenada con el siguiente, eliminar duplicados y devolver solo una instancia de cada elemento. Este método requiere que la entrada se ordene primero.

Así es como funcionará:

  1. Lea el archivo y ordene el contenido: $lines=Get-Content “C:\MyFolder\MyExample.txt” | Ordenar-objeto
  2. Obtener líneas únicas: $uniqueLines=$lines | Sea único
  3. Envíe las líneas únicas a un nuevo archivo: $uniqueLines | Contenido del conjunto “C:\MiCarpeta\MiEjemplo_unique.txt”

Este método garantiza que obtenga líneas únicas; a continuación se muestra el script completo.

$lines = Get-Content "C:\MyFolder\MyExample.txt" | Sort-Object

$uniqueLines = $lines | Get-Unique

$uniqueLines | Set-Content "C:\MyFolder\MyExample_unique.txt"

$uniqueLines

Ejecuté el script anterior y me mostró el resultado en la consola y lo escribió en el archivo de texto. Mira la captura de pantalla a continuación.

Método 2: usar Select-Object con -Unique Parameter

Déjame mostrarte otro método relativamente simple. En PowerShell, puede usar Select-Object con el parámetro -Unique. Cuando usamos el parámetro -Unique, no necesitamos ordenar la entrada.

Así es como funcionará:

  1. Lea el archivo y obtenga líneas únicas: $uniqueLines=Get-Content “C:\MyFolder\MyExample.txt” | Seleccionar-Objeto-Único
  2. Envíe las líneas únicas a un nuevo archivo: $uniqueLines | Contenido del conjunto “C:\MiCarpeta\MiEjemplo_unique.txt”

Aquí está el script completo de PowerShell:

$uniqueLines = Get-Content "C:\MyFolder\MyExample.txt" | Select-Object -Unique
$uniqueLines | Set-Content "C:\MyFolder\MyExample_unique.txt"
$uniqueLines

Mire la captura de pantalla a continuación, muestra un resultado como el anterior después de ejecutar el script de PowerShell usando el código VS.

Método 3: usar HashSet

Si está trabajando con un archivo de texto grande, puede usar HashSet para obtener líneas únicas en PowerShell.

Así es como funciona.

  1. Inicializa el HashSet y lee el archivo: $hashSet=[System.Collections.Generic.HashSet[string]]::new() $lines=Get-Content "C:\MyFolder\ MiEjemplo.txt"
  2. Agregue cada línea al HashSet: foreach ($line in $lines) { $hashSet.Add($line) | Fuera nulo }
  3. Envíe las líneas únicas a un nuevo archivo: $hashSet | Contenido del conjunto "C:\MyFolder\MyExample_unique.txt"

Aquí está el guión completo.

# Step 1: Initialize the HashSet and read the file
$hashSet = [System.Collections.Generic.HashSet[string]]::new()
$lines = Get-Content "C:\MyFolder\MyExample.txt"

# Step 2: Add each line to the HashSet
foreach ($line in $lines) {
    $hashSet.Add($line) | Out-Null
}

# Step 3: Output the unique lines to a new file
$hashSet | Set-Content "C:\MyFolder\MyExample_unique.txt"

Método 4: uso del cmdlet de objeto de grupo

Déjame mostrarte el método final.

También puede usar el cmdlet Group-Object en PowerShell para agrupar y luego seleccionar líneas únicas.

Así es como funciona:

  1. Lea el archivo y agrupe el contenido por línea: $groupedLines=Get-Content "C:\MyFolder\MyExample.txt" | Objeto de grupo
  2. Seleccione líneas únicas: $uniqueLines=$groupedLines | Para cada objeto { $_.Name }
  3. Envíe las líneas únicas a un nuevo archivo: $uniqueLines | Contenido del conjunto "C:\MyFolder\MyExample_unique.txt"

A continuación se muestra el guión completo.

# Step 1: Read the file and group by line content
$groupedLines = Get-Content "C:\MyFolder\MyExample.txt" | Group-Object

# Step 2: Select unique lines
$uniqueLines = $groupedLines | ForEach-Object { $_.Name }

# Step 3: Output the unique lines to a new file
$uniqueLines | Set-Content "C:\MyFolder\MyExample_unique.txt"

$uniqueLines

Después de ejecutar el script anterior, puede ver el resultado en la captura de pantalla a continuación.

Conclusión

Espero que ahora tengas una idea completa de cómo obtener líneas únicas de un archivo en PowerShell usando varios métodos, como el cmdlet Get-Unique, Select-Object con -Unique Parameter y Group. -Cmdlet de objeto.

Artículos relacionados