Existe um cmdlet ou sintaxe “string does not contains” do PowerShell?
-
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 {$_}
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