Como obter o texto de pesquisa do PowerShell?
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 internos grep
que farão o mesmo trabalho em seus scripts.
Usando findstr para pesquisar no PowerShell
O PowerShell tem vários utilitários de pesquisa diferentes, cada um com seus próprios pontos fortes. O mais simples é findstr
o 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 passar a saída para ele ls
para procurar 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 um /R
sinalizador para passar expressões regulares básicas.
ls | findstr /R ba[a-z]\.txt
No entanto, se você quiser pesquisar explicitamente incluindo espaço, precisará usar /C:
o sinalizador:
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 configurar “grep” como um alias para findstr
, o que economizará um pouco de memória muscular.
new-alias grep findstr
Usando Select-String para pesquisar grep no PowerShell
Outro método nativo oferecido pelo PowerShell é o Select-String
cmdlet, que é semelhante em muitos aspectos, findstr
mas é um cmdlet do PowerShell em vez de um executável do Windows.
Isso significa que ele funcionará melhor em scripts do PowerShell e, o mais importante, retornará sua saída como um objeto que pode ser lindamente impresso pelo PowerShell. Também é mais fácil de usar na linha de comando, pois a conclusão da guia do PowerShell funcionará com ele.
Funciona da mesma findstr
maneira e pode aceitar curingas e expressões regulares.
ls | Select-String foo
ls | Select-String -Pattern <regexPattern>
Você pode usar Select-String
para pesquisar texto dentro de arquivos passando um -Path
argumento para ele. 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á usar o alias “grep” para acesso rápido.
remove-alias grep
new-alias grep Select-String
Deixe um comentário