Gibt es eine „Zeichenfolge enthält keine“ Powershell-Cmdlets oder Syntax?
-
09-06-2019 - |
Frage
In Powershell ich in einer Textdatei bin zu lesen. Ich bin dann eine Foreach-Object über die Textdatei zu tun und bin daran interessiert sind nur in den Zeilen, die Strings nicht enthalten, die in $arrayOfStringsNotInterestedIn
sind.
Was ist die Syntax für das?
Get-Content $filename | Foreach-Object {$_}
Lösung
Wenn $ arrayofStringsNotInterestedIn ist ein [Array] sollten Sie -notcontains:
Get-Content $FileName | foreach-object { `
if ($arrayofStringsNotInterestedIn -notcontains $_) { $) }
oder besser (IMO)
Get-Content $FileName | where { $arrayofStringsNotInterestedIn -notcontains $_}
Andere Tipps
Sie können den -notmatch Operator verwenden, um die Zeilen, die Sie in interessiert sind, nicht die Zeichen haben.
Get-Content $FileName | foreach-object {
if ($_ -notmatch $arrayofStringsNotInterestedIn) { $) }
Um die Linien auszuschließen, dass jede der Saiten in $ arrayOfStringsNotInterestedIn enthält, sollten Sie verwenden:
(Get-Content $FileName) -notmatch [String]::Join('|',$arrayofStringsNotInterestedIn)
Der Code von Chris vorgeschlagen funktioniert nur, wenn $ arrayofStringsNotInterestedIn die vollen Linien enthält, die Sie ausschließen möchten.