解析在PowerShell 1.0版中模拟"grep -C 2"

sli*_*sec 5 powershell scripting

我正在尝试挖掘一些日志,并在我可以匹配的行之前和之后需要信息.我如何在PowerShell ala"grep -C 2"中执行此操作?

在版本1中,我不能等待r2,然后我将它放在生产机器上:)

Sco*_*ein 7

与grep等效的PowerShell是select-string.您可以使用以下内容.

cat file | select-string "pattern" -context 2
Run Code Online (Sandbox Code Playgroud)

注意:这仅适用于PowerShell v2.0.


sli*_*sec 1

更接近这里 - 因为 Select-String 返回 MatchInfo 对象,我可以从(39017)中提取行号,现在我只需要提取周围的行...所以:

gc $bigfile | Select-String melissao | 
%{(gc $bigfile)[($_.LineNumber -2)..($_.LineNumber +2)]}
Run Code Online (Sandbox Code Playgroud)

如果有人可以稍微清理一下以降低速度,那么您可能就会找到答案。否则,这个解决方案可以工作,但显然不会很快。