Существует ли командлет или синтаксис PowerShell «строка не содержит»?

StackOverflow https://stackoverflow.com/questions/74957

  •  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 содержит полные строки, которые вы хотите исключить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top