我想读取每行中的日志文件是一个序列号。现在我想得到所有有seq.no.的行。大于或等于$ low = 111和更少或eqal而不是$ high = 123 - 我可以用Where-Object做到这一点:
$LogEntries = Get-Content -Path $LogFile | Where-Object {
$f = $_ -maltch 'EntryNo=(\d+)\D'
if ($f) {
[decimal]n = mathches[1]
if ( n -ge $low -and n -le $high ) {
# how to continue?
}
}
}
如果可以,我该如何填写括号?
提前致谢,
gooly
Loegfile Entrioes:
PowerShell;Test.ps1;....;SeqNo=109;Tag=..
PowerShell;Test.ps1;....;SeqNo=110;Tag=..
PowerShell;Test.ps1;....;SeqNo=111;Tag=..
PowerShell;Test.ps1;....;SeqNo=112;Tag=..
PowerShell;Test.ps1;....;SeqNo=113;Tag=..
PowerShell;Test.ps1;....;SeqNo=114;Tag=..
...
答案 0 :(得分:2)
只需使用它应该如何使用的管道:
获取文件内容
Get-Content logfile |
过滤序列号
where {
if ($_ -match 'SeqNo=\d+') {
$seq = +$Matches[1] # The + in front coerces the match to a number
$seq -ge $low -and $seq -le $high
} else { $false }
}
为了增加优雅,高低的比较也可以按如下方式进行:
where { $low..$high -eq $seq }
(可能会慢一点,取决于$low
和$high
之间的差距有多大。)