lunes, 6 de mayo de 2013

Búsqueda rápida en Power Shell

Problema

Se debe hacer una búsqueda en power shell en una gran cantidad de datos, digamos un archivo de texto con 200 mil registros, de a uno por línea. La búsqueda común en powershell tarda mucho.

Solución

Se realiza la búsqueda utilizando ArrayLists (System.Collections.ArrayList)


clear
#leo el archivo
$db = get-content miArchivo
 
#cargo el contenido del archivo en un ArrayList
[System.Collections.ArrayList] $list = New-Object System.Collections.ArrayList 
 
foreach ($item in $db){
    [void] $list.Add($item)
} 
 
#ordeno el archivo (sin esto no funciona la búsqueda binaria)
$list.Sort()

$reg = Read-Host "Ingrese el registro a buscar"
$pos = $list.BinarySearch($reg)
if ($pos -ge 0){
    Write-Host "El registro se encuentra en la posición: " + $pos
}else{
    Write-Host "No se encuentra el registro"
}

Más info en:

ArrayList (sort)

No hay comentarios:

Publicar un comentario