Existe um cmdlet ou sintaxe “string does not contains” do PowerShell?

StackOverflow https://stackoverflow.com/questions/74957

  •  09-06-2019
  •  | 
  •  

Pergunta

No PowerShell estou lendo um arquivo de texto.Estou então fazendo um Foreach-Object sobre o arquivo de texto e estou interessado apenas nas linhas que NÃO contêm strings que estão em $arrayOfStringsNotInterestedIn.

Qual é a sintaxe para isso?

   Get-Content $filename | Foreach-Object {$_}
Foi útil?

Solução

Se $arrayofStringsNotInterestedIn for um [array], você deve usar -notcontains:

Get-Content $FileName | foreach-object { `
   if ($arrayofStringsNotInterestedIn -notcontains $_) { $) }

ou melhor (IMO)

Get-Content $FileName | where { $arrayofStringsNotInterestedIn -notcontains $_}

Outras dicas

Você pode usar o operador -notmatch para obter as linhas que não possuem os caracteres de seu interesse.

     Get-Content $FileName | foreach-object { 
     if ($_ -notmatch $arrayofStringsNotInterestedIn) { $) }

Para excluir as linhas que contêm qualquer uma das strings em $arrayOfStringsNotInterestedIn, você deve usar:

(Get-Content $FileName) -notmatch [String]::Join('|',$arrayofStringsNotInterestedIn)

O código proposto por Chris só funciona se $arrayofStringsNotInterestedIn contiver as linhas completas que você deseja excluir.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top