我想在其中解析带有纯文本(字符串和值)的.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之后的条件。那是为什么?
答案 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 }
}