En bash, si je fais ce qui suit, j'aurai toutes les variables d'environnement wd
.
env | grep "wd"
Maintenant, à Powershell, je sais que je pourrais faire
get-childitem env:wd*
Mais je veux utiliser pipe-select comme une approche plus générique, afin de filtrer ce qui sort de son tuyau, peu importe ce qui se trouve à gauche du tuyau. Juste comme grep.
Cela ne filtre rien, j'obtiens toutes les variables d'environnement.
get-childitem env: | out-string | select-string -Pattern wd
Et cela ne m'apporte rien:
get-childitem env: | select-string -Pattern "wd"
Je sais que je pourrais utiliser ce qui suit, et la correspondance est meilleure si je filtre uniquement sur le nom de la variable d'environnement. Mais que faire si je veux un filtre rapide et sale à la grep? Et surtout, sans connaître les attributs de ce qui sort du tuyau.
get-childitem env: | where-object {$_.Name -like "wd*"}
En d'autres termes, existe-t-il un équivalent Powershelll à grep utilisable dans un contexte de canal, et pas seulement dans le contexte de recherches de fichiers , qui select-string
semble bien couvrir?
la source
Out-String -Stream
get-childitem env: | Out-String -Stream | select-string -Pattern wd
était juste le billet. THX! Je ne sais pas si cela vous intéresse, mais je l'accepterai définitivement si vous le publiez comme réponse.Réponses:
Par défaut,
Out-String
produit un seul objet chaîne contenant toute la sortie. Le filtre suivant sélectionnera ou supprimera toute la sortie dans son ensemble. Vous devez utiliser le-Stream
paramètre d'Out-String
applet de commande pour générer un objet chaîne distinct pour chaque ligne de sortie.la source
Même réponse, en tant que fonction et alias, on peut inclure dans son profil powershell:
la source