filtra as saídas usando canais de sequência de seleção

6

No bash, se eu fizer o seguinte, irei obter todas as variáveis de ambiente com wd nelas.

env | grep "wd"

Agora, em Powershell, sei que posso fazer

get-childitem env:wd*

Mas eu quero canalizar para selecionar string como uma abordagem mais genérica, a fim de filtrar o que está vindo de seu pipe, não importa o que está à esquerda do pipe. Como grep.

Isso não filtra nada, eu obtenho todas as variáveis de ambiente.

get-childitem env: | out-string | select-string -Pattern wd

E isso não me dá nada:

get-childitem env: | select-string -Pattern "wd"

Eu sei que poderia usar o seguinte, e é realmente uma correspondência melhor se eu filtrar apenas o nome da variável de ambiente. Mas e se eu quiser um filtro rápido e sujo a la grep? E especialmente, sem saber sobre os atributos do que vem do pipe.

get-childitem env: | where-object {$_.Name -like "wd*"}

i.e. Existe um equivalente Powershelll ao grep utilizável em um contexto de pipe, não apenas no contexto de pesquisas de arquivos , que select-string parece cobrir bem.

    
por JL Peyret 25.11.2016 / 22:24

1 resposta

6

Por padrão, Out-String produz um objeto de string único, que contém toda a saída, portanto o filtro a seguir selecionará ou descartará toda a saída como um todo. Você precisa usar o parâmetro -Stream de Out-String cmdlet para produzir um objeto string separado para cada linha de saída.

    
por 25.11.2016 / 23:06