我编写了一个Powershell脚本,在日志文件中查找字符串(例如ERROR)并抓取这些行并将这些行输出到文件中,以便更简单地阅读等(我所在的行业非常大)日志文件),但我遇到了问题。之前,当代码的(相关)部分看起来像这样:
Select-String -Path "$file" -Pattern "$string" -CaseSensitive | Out-File -filepath $filepath
它将输出文件路径,行号,然后输出实际行,从而形成一个非常混乱的文件。好吧,我只需要行号和行号,所以我这样做了:
Select-String -Path "$file" -Pattern "$string" -CaseSensitive | Select-Object -Property LineNumber,Line | Out-File -filepath $filepath
哪个会返回如下所示的行:
978 2017-07-10 10:46:11,288 ERROR [Music...
这是行号,然后是行,行只有35个字符
在我将Select-String
传递给Select-Object
之前,脚本会输出整行,但现在使用Select-Object
它会省略一些输出。我尝试向-verbose
和Select-String
添加Select-Object
参数,但这没有做任何事情。
答案 0 :(得分:3)
你可以试试这个:
Select-String -Path "test.xml" -Pattern "ERROR" -CaseSensitive | ft -Property LineNumber,Line -Wrap | Out-File -FilePath c:\out.txt
您的问题的原因是屏幕缓冲区长度(increasing powershell screen buffer width),您也可以更改它,但上面的代码段更简单有效