¿Existe un cmdlet o una sintaxis de PowerShell que “la cadena no contiene”?
-
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 {$_}
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