比较行,-notcontains被忽略

时间:2014-08-12 07:09:38

标签: string powershell

我想在其中解析带有纯文本(字符串和值)的.dat文件。

例如,我希望价值落后于#34; NAME:"。但是还有一条与" FAM.NAME:"在它。

但我只想要一个有NAME的人。 这就是我试过的:

$content= Get-Content $_.FullName
foreach($line in $content){  
   if($line -contains "NAME" -and $line -notcontains "FAM" ) { $test= $line  }
}

据我了解,条件是该行包含" NAME"并且不包含" FAM"。

输出是" FAM.NAME:ALFREDO"。它似乎忽略了-and之后的条件。那是为什么?

2 个答案:

答案 0 :(得分:4)

您也可以使用-like运算符 -

PS>"FAM.NAME: ALFREDO" -like "NAME*"  
False             

PS>"NAME: ALFREDO" -like "NAME*"  
True              

注意 - 请务必添加*以匹配字符串的其余部分,否则无法匹配

答案 1 :(得分:2)

您需要使用-match-notmatch来比较字符串,而不是在数组上运行的-contains-notcontains

$content= Get-Content $_.FullName
foreach($line in $content){  
   if($line -match "NAME" -and $line -notmatch"FAM" ) { $test= $line  }
}