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 è findstr
l’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 findstr
ma è 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 findstr
modo e può accettare caratteri jolly ed espressioni regolari.
ls | Select-String foo
ls | 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