2008-09-16 12 views
23

En Powershell estoy leyendo en un archivo de texto. Estoy haciendo un objeto Foreach sobre el archivo de texto y solo estoy interesado en las líneas que NO contienen cadenas que están en $ arrayOfStringsNotInterestedIn¿Hay un cmdlet o sintaxis de Powershell "string does not contain"?

¿Alguien sabe la sintaxis para esto?

Get-Content $filename | Foreach-Object {$_} 
+0

Probablemente pueda usar * -notmatch * o * -notlike * junto con cada una de las cadenas en su matriz. –

Respuesta

35

Si $ arrayofStringsNotInterestedIn es un [matriz] se debe utilizar -notcontains :

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

o mejor (OMI)

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

Usted puede utilizar el operador -notmatch para obtener las líneas que no tienen los personajes que le interesan.

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

http://technet.microsoft.com/en-us/magazine/cc137764.aspx –

+0

¿Alguien ha probado esto? Cuando lo intento, la sintaxis es incorrecta y devuelve todas las líneas del archivo. – OwenP

+3

-no coinciden ahora. Gracias, funciona mejor que -no contiene cadena en una cadena – Brent

1

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

(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.

Cuestiones relacionadas