Como grep texto de pesquisa do PowerShell

0
45


grep é um poderoso utilitário de pesquisa de texto no Linux, mas não está disponível no Windows. Embora existam portas e soluções de terceiros, o PowerShell oferece equivalentes integrados para grep que fará o mesmo trabalho em seus scripts.

Usando findstr para procurar grep no PowerShell

Existem alguns utilitários de pesquisa diferentes no PowerShell, cada um com seus próprios benefícios. o mais simples é findstr, que é um executável nativo do Windows. Isso funciona bem para substituir o grep por operações de pesquisa simples na linha de comando. Por exemplo, você pode canalizar a saída de ls para encontrar correspondências.

ls | findstr "foo"

Você também pode pesquisar várias palavras de uma só vez, usar curingas para corresponder a qualquer coisa e usar o /R sinalizador para passar expressões regulares básicas.

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

No entanto, se você quiser pesquisar explicitamente incluindo um espaço, precisará usar o /C: bandeira:

ls | findstr /C:"foo"

Se você está acostumado com a linha de comando do Linux e não quer se lembrar de um novo comando, você pode definir “grep” como um alias para findstrque lhe permitirá manter a sua memória muscular.

new-alias grep findstr

Usando Select-String para pesquisar grep no PowerShell

O outro método nativo que o PowerShell oferece é o Select-String cmdlet, que faz muitas das mesmas coisas que findstrmas é um cmdlet do PowerShell em vez de um executável do Windows.

Isso significa que funcionará melhor em scripts do PowerShell e, mais importante, retornará sua saída como um objeto, que o PowerShell pode imprimir bem. Também é mais fácil de usar na linha de comando, pois a conclusão da guia do PowerShell funcionará com ele.

funciona igual findstre também pode aceitar curingas e expressões regulares.

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

Você pode usar Select-String para grep texto dentro de arquivos, passando-lhe um -Path enredo. Você também pode usá-lo com entrada passada de outros cmdlets como Get-Content.

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

Se você quiser usá-lo na linha de comando, também poderá criar um alias para “grep” para acesso rápido.

remove-alias grep
new-alias grep Select-String