Есть ли в PowerShell «строка не содержит» командлет или синтаксис? - PullRequest
24 голосов
/ 16 сентября 2008

В PowerShell я читаю в текстовом файле. Затем я делаю Foreach-Object над текстовым файлом и меня интересуют только строки, которые НЕ содержат строк, которые находятся в $arrayOfStringsNotInterestedIn.

Какой синтаксис для этого?

   Get-Content $filename | Foreach-Object {$_}

Ответы [ 3 ]

40 голосов
/ 16 сентября 2008

Если $ arrayofStringsNotInterestedIn является [массивом], вы должны использовать -notcontains:

Get-Content $FileName | foreach-object { `
   if ($arrayofStringsNotInterestedIn -notcontains $_) { $) }

или лучше (ИМО)

Get-Content $FileName | where { $arrayofStringsNotInterestedIn -notcontains $_}
10 голосов
/ 16 сентября 2008

Вы можете использовать оператор -notmatch, чтобы получить строки, в которых нет нужных вам символов.

     Get-Content $FileName | foreach-object { 
     if ($_ -notmatch $arrayofStringsNotInterestedIn) { $) }
1 голос
/ 27 сентября 2008

Чтобы исключить строки, содержащие любую из строк в $ arrayOfStringsNotInterestedIn, вы должны использовать:

(Get-Content $FileName) -notmatch [String]::Join('|',$arrayofStringsNotInterestedIn)

Код, предложенный Крисом, работает, только если $ arrayofStringsNotInterestedIn содержит полные строки, которые вы хотите исключить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...