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