it-swarm-es.com

¿Hay una cadena de PowerShell "no contiene" cmdlet o sintaxis?

En PowerShell estoy leyendo en un archivo de texto. Luego estoy haciendo un Foreach-Object sobre el archivo de texto y solo estoy interesado en las líneas que NO contienen cadenas que están en $arrayOfStringsNotInterestedIn.

¿Cuál es la sintaxis para esto?

   Get-Content $filename | Foreach-Object {$_}
27
Guy

Si $ arrayofStringsNotInterestedIn es una [matriz], debe usar -notcontains:

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

o mejor (IMO)

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

Puede usar el operador -notmatch para obtener las líneas que no tienen los caracteres que le interesan.

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

Para excluir las líneas que contienen cualquiera de las cadenas en $ arrayOfStringsNotInterestedIn, debe usar:

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

El código propuesto por Chris solo funciona si $ arrayofStringsNotInterestedIn contiene las líneas completas que desea excluir.

1
Bruno Gomes