Come ottenere il testo di ricerca da PowerShell?

Come ottenere il testo di ricerca da PowerShell?

grep è una potente utilità di ricerca di testo su Linux, ma non è disponibile su Windows. Sebbene esistano porte e soluzioni di terze parti, PowerShell offre equivalenti integrati grep che svolgeranno lo stesso lavoro negli script.

Utilizzo di findstr per cercare in PowerShell

PowerShell ha diverse utilità di ricerca, ognuna con i propri punti di forza. Il più semplice è findstrl’eseguibile nativo di Windows. Funziona bene per sostituire grep per semplici operazioni di ricerca sulla riga di comando. Ad esempio, puoi passargli l’output per ls cercare corrispondenze.

ls | findstr "foo"

Puoi anche cercare più parole contemporaneamente, utilizzare caratteri jolly per trovare qualsiasi corrispondenza e utilizzare un /R flag per passare espressioni regolari di base.

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

Tuttavia, se desideri eseguire una ricerca esplicita includendo lo spazio, dovrai utilizzare /C: il flag:

ls | findstr /C:"foo"

Se sei abituato alla riga di comando di Linux e non vuoi ricordare un nuovo comando, puoi impostare “grep” come alias per findstr, che ti farà risparmiare un po’ di memoria muscolare.

new-alias grep findstr

Utilizzo di Select-String per cercare grep in PowerShell

Un altro metodo nativo offerto da PowerShell è il Select-String cmdlet, che è simile in molti modi findstrma è un cmdlet di PowerShell anziché un eseguibile di Windows.

Ciò significa che funzionerà meglio negli script di PowerShell e, soprattutto, restituirà il suo output come un oggetto che può essere stampato magnificamente da PowerShell. È anche più facile da usare sulla riga di comando, poiché il completamento della scheda PowerShell funzionerà con esso.

Funziona allo stesso findstrmodo e può accettare caratteri jolly ed espressioni regolari.

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

Puoi usare Select-String per cercare il testo all’interno dei file passandogli un -Path argomento. Puoi anche usarlo con l’input passato da altri cmdlet come Get-Content.

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

Se vuoi usarlo sulla riga di comando, puoi anche usare l’alias “grep” per un accesso rapido.

remove-alias grep

new-alias grep Select-String

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *