Comment grep Rechercher du texte à partir de PowerShell
grep
est un puissant utilitaire de recherche de texte sous Linux, mais il n’est pas disponible sous Windows. Bien qu’il existe des ports et des solutions tiers, PowerShell offre des équivalents intégrés pour grep
qui fera le même travail dans vos scripts.
Utilisation de findstr pour grep Search In PowerShell
Il existe deux utilitaires de recherche différents dans PowerShell, chacun avec ses propres forces. Le plus simple est findstr
, qui est un exécutable Windows natif. Cela fonctionne bien pour remplacer grep pour les opérations de recherche simples sur la ligne de commande. Par exemple, vous pouvez rediriger la sortie de ls
à lui pour trouver des correspondances.
ls | findstr "foo"
Vous pouvez également rechercher plusieurs mots à la fois, utiliser des caractères génériques pour faire correspondre n’importe quoi et utiliser le /R
flag pour passer des expressions régulières de base.
ls | findstr /R ba[a-z].txt
Cependant, si vous souhaitez effectuer une recherche explicite en incluant un espace, vous devrez utiliser le /C:
drapeau:
ls | findstr /C:"foo"
Si vous êtes habitué à la ligne de commande Linux et que vous ne voulez pas vous souvenir d’une nouvelle commande, vous pouvez configurer « grep » comme alias pour findstr
ce qui vous permettra de conserver votre mémoire musculaire.
new-alias grep findstr
Utilisation de Select-String pour grep Search dans PowerShell
L’autre méthode native proposée par PowerShell est la Select-String
applet de commande, qui fait beaucoup des mêmes choses que findstr
mais est une applet de commande PowerShell au lieu d’un exécutable Windows.
Cela signifie qu’il fonctionnera mieux dans les scripts PowerShell et renverra notamment sa sortie sous forme d’objet, qui peut être joliment imprimé par PowerShell. Il est également plus facile à utiliser sur la ligne de commande, car la complétion des onglets de PowerShell fonctionnera avec.
Cela fonctionne exactement comme findstr
et peut également accepter des caractères génériques et des expressions régulières.
ls | Select-String foo
ls | Select-String -Pattern <regexPattern>
Vous pouvez utiliser Select-String
grep texte à l’intérieur des fichiers, en lui passant un -Path
dispute. Vous pouvez également l’utiliser avec des entrées transmises par d’autres cmdlets comme Get-Content
.
Select-String -Path ".foo.txt" -Pattern ba.*
Si vous souhaitez l’utiliser en ligne de commande, vous pouvez également l’alias « grep » pour un accès rapide.
remove-alias grep new-alias grep Select-String