¿Existe un cmdlet o una sintaxis de PowerShell que “la cadena no contiene”?

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

  •  09-06-2019
  •  | 
  •  

Pregunta

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

¿Cuál es la sintaxis para esto?

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

Solución

Si $arrayofStringsNotInterestedIn es una [matriz] deberías usar -notcontains:

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

o mejor (en mi opinión)

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

Otros consejos

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

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

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

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

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top