Comment télécharger des fichiers via FTP avec PowerShell
Agence web » Actualités du digital » Comment grep Rechercher du texte à partir de PowerShell

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 findstrce 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 findstrmais 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 findstret 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

★★★★★