¿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 findstr
el 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, findstr
pero 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 findstr
manera y puede aceptar comodines y expresiones regulares.
ls | Select-String foo
ls | 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