是否存在PowerShell“字符串不包含”cmdlet或语法?

时间:2008-09-16 17:42:42

标签: powershell

在PowerShell中,我正在阅读文本文件。然后我在文本文件上做一个Foreach-Object,我只对那些不包含$arrayOfStringsNotInterestedIn字符串的行感兴趣。

这是什么语法?

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

3 个答案:

答案 0 :(得分:40)

如果$ arrayofStringsNotInterestedIn是[数组],你应该使用-notcontains:

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

或更好(IMO)

Get-Content $FileName | where { $arrayofStringsNotInterestedIn -notcontains $_}

答案 1 :(得分:10)

您可以使用-notmatch运算符来获取没有您感兴趣的字符的行。

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

答案 2 :(得分:1)

要排除包含$ arrayOfStringsNotInterestedIn中任何字符串的行,您应该使用:

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

Chris建议的代码仅在$ arrayofStringsNotInterestedIn包含您要排除的整行时才有效。