我正在使用以下powershell搜索文件中的行项目,并选择接下来匹配的5行:
Get-Content -Path C:testfile.txt | Where-Object {$_ -match "###"} | Select-Object -Last 5
这只返回每个匹配的第一行。预期的结果将是第一行和后面的5行。
由于-Context
参数的原因,选择字符串是一个很好的候选者:
Select-String -Path C:testfile.txt -Pattern '###' -Context 0,5 |
Foreach-Object { $_.Line,$_.Context.PostContext}
-Context
参数采用两个值。第一个是比赛前的行数。第二个是匹配后的行数。从技术上讲,在这种情况下可以使用-Context 5
,因为一个数字适用于匹配后的行。
由于Select-String
返回一个MatchInfo
对象。您需要访问Line
属性才能显示包含当前匹配项的行。Context
属性是包含Precontext
和Postcontext
属性的MatchInfoContext
对象。这些属性分别包含匹配之前和之后的行。
Get-Content -Path C:tempfile.txt | Where-Object {$_ -match "###"} | Select-Object -Index 0,4
这会给你第一排和第五排的