[ad_1]
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 findstr
que 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 findstr
mas é 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 findstr
e 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
[ad_2]