Есть ли в PowerShell "строка не содержит" командлет или синтаксис?
В PowerShell я читаю в текстовом файле. Затем я делаю Foreach-Object над текстовым файлом и меня интересуют только строки, которые НЕ содержат строк, находящихся в $arrayOfStringsNotInterestedIn
.
Какой синтаксис для этого?
Get-Content $filename | Foreach-Object {$_}
Ответы
Ответ 1
Если $arrayofStringsNotInterestedIn - это [массив], вы должны использовать -notcontains:
Get-Content $FileName | foreach-object { `
if ($arrayofStringsNotInterestedIn -notcontains $_) { $) }
или лучше (IMO)
Get-Content $FileName | where { $arrayofStringsNotInterestedIn -notcontains $_}
Ответ 2
Вы можете использовать оператор -notmatch для получения строк, которые не имеют интересующих вас символов.
Get-Content $FileName | foreach-object {
if ($_ -notmatch $arrayofStringsNotInterestedIn) { $) }
Ответ 3
Чтобы исключить строки, содержащие любую из строк в $arrayOfStringsNotInterestedIn, вы должны использовать:
(Get-Content $FileName) -notmatch [String]::Join('|',$arrayofStringsNotInterestedIn)
Код, предложенный Крисом, работает только в том случае, если $arrayofStringsNotInterestedIn содержит полные строки, которые вы хотите исключить.