Equivalente de PowerShell Grep – informaticamadridmayor

El grep El comando se usa ampliamente en Linux para analizar archivos y resultados de shell. Con grep puede encontrar y filtrar fácilmente la salida devuelta por el comando anterior en la canalización. En este artículo, veremos los equivalentes del grep comando en Windows PowerShell.

En la línea de comandos de Windows (CMD), el equivalente a grep es Findstr. Sin embargo, es difícil usarlo en scripts de PowerShell. El equivalente de PowerShell más simple a grep es Seleccionar cadena.

El cmdlet Select-String proporciona las siguientes características:

  • Buscar por expresiones regulares (predeterminado);
  • Búsqueda por coincidencia literal (el parámetro -Simple);
  • Busque solo la primera coincidencia en el archivo, ignorando todas las siguientes (el interruptor –List);
  • Busque todas las coincidencias, incluso si hay varias en una línea (-AllMatches);
  • Busque líneas que no coincidan con el patrón (el parámetro –NotMatch es similar al modificador –v de la herramienta grep);
  • Además de la línea que coincide directamente, muestra varias líneas anteriores y siguientes (el argumento -Context);
  • Select-String permite especificar la codificación del archivo de entrada (parámetro -Encoding). Se admiten las siguientes codificaciones: ASCII, BigEndianUnicode, OEM, Unicode, UTF7, UTF8, UTF8BOM, UTF8NoBOM, UTF32.

Por ejemplo, use el siguiente comando para buscar una lista de puertos abiertos en su computadora (con el estado Escuchando):

netstat -na | Select-String "LISTENING"

Si el comando de tubería anterior devuelve objetos en lugar de texto, use el comando Out-String –Stream antes de pasarlos a Select-String:

Get-Service | Out-String -Stream | Select-String "Running"

Puede usar las expresiones regulares (RegEx) en el cmdlet Select-String. Por ejemplo, el siguiente comando encontrará todos los archivos o líneas que contengan la palabra «Error» en la carpeta especificada:

Get-ChildItem -Path C:PS | Select-String -Pattern 'Error'

Si necesita verificar todas las subcarpetas, use el parámetro -Recurse:

Get-ChildItem "C:PS" -Filter *.log -Recurse | Select-String "Failed"|

Para mostrar los nombres de todos los archivos encontrados y los números de línea coincidentes:

Get-ChildItem "C:PS" -Filter *.log -Recurse | Select-String "Failed"| Select Filename, LineNumber, Line, Path | Format-Table

equivalente a grep powershell

Puede copiar todos los archivos con coincidencias en el directorio especificado:

Get-ChildItem C:logs -Filter *.log -Recurse | Select-String "Failed"| Copy-Item -Destination C:Errors

Como puede ver, el cmdlet Select-String le permite procesar datos de cadena. Utilizar el Objeto donde cmdlet si necesita grep objetos (filtrado de objetos de PowerShell usando Where-Object).

Por ejemplo, desea encontrar todos los procesos que utilizan más de 300 MB de RAM:

Get-Process | Where-Object { $_.WorkingSet -gt 314572800 }

Windows grep equivalente

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *