¿Cómo obtener texto de búsqueda de PowerShell?

¿Cómo obtener texto de búsqueda de PowerShell?

grep es una potente utilidad de búsqueda de texto en Linux, pero no está disponible en Windows. Si bien existen puertos y soluciones de terceros, PowerShell ofrece equivalentes integrados grep que harán el mismo trabajo en sus scripts.

Usando findstr para buscar en PowerShell

PowerShell tiene varias utilidades de búsqueda diferentes, cada una con sus propias ventajas. El más simple es findstrel ejecutable nativo de Windows. Esto funciona bien para reemplazar grep para operaciones de búsqueda simples en la línea de comando. Por ejemplo, puede pasarle la salida para ls buscar coincidencias.

ls | findstr "foo"

También puede buscar varias palabras a la vez, usar comodines para hacer coincidir cualquier cosa y usar una /R bandera para pasar expresiones regulares básicas.

ls | findstr /R ba[a-z]\.txt

Sin embargo, si desea buscar explícitamente con espacio, deberá usar /C: la bandera:

ls | findstr /C:"foo"

Si está acostumbrado a la línea de comandos de Linux y no quiere recordar un nuevo comando, puede configurar «grep» como un alias para findstr, lo que le ahorrará algo de memoria muscular.

new-alias grep findstr

Usando Select-String para buscar grep en PowerShell

Otro método nativo que ofrece PowerShell es el Select-String cmdlet, que es similar en muchos aspectos, findstrpero es un cmdlet de PowerShell en lugar de un ejecutable de Windows.

Esto significa que funcionará mejor en los scripts de PowerShell y, lo que es más importante, devolverá su salida como un objeto que PowerShell puede imprimir perfectamente. También es más fácil de usar en la línea de comando, ya que la finalización de la pestaña de PowerShell funcionará con él.

Funciona de la misma findstrmanera y puede aceptar comodines y expresiones regulares.

ls | Select-String fools | Select-String -Pattern <regexPattern>

Puede usar Select-String para buscar texto dentro de los archivos pasándole un -Path argumento. También puede usarlo con entradas pasadas desde otros cmdlets como Get-Content.

Select-String -Path ".\foo.txt"-Pattern ba.*

Si desea usarlo en la línea de comando, también puede usar el alias «grep» para un acceso rápido.

remove-alias grep

new-alias grep Select-String

Deja una respuesta

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