获取Where对象后的下5行



我正在使用以下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属性是包含PrecontextPostcontext属性的MatchInfoContext对象。这些属性分别包含匹配之前和之后的行。

Get-Content -Path C:tempfile.txt | Where-Object  {$_ -match "###"} | Select-Object -Index 0,4

这会给你第一排和第五排的

最新更新