PowerShell中Select-String提取长行内容被截断问题求助
PowerShell提取长日志行的问题解决方法
问题场景
使用以下命令提取日志中特定模式开头的行时,短行(少于1000字符)可以正常获取,但长行仅返回前1000字符:
Select-String -Path "debug.log" -Pattern '{"id":0,"code":"OE#' | Select-Object -ExpandProperty Line | Out-File -FilePath test.log
尝试过以下方法均未解决:
Format-Table -Autosize -WrapOut-String -Width 4096Out-File -FilePath test.log -Width 2147483647
问题原因
Select-String默认的-MaximumLineLength参数值为1024,超过这个长度的行在匹配时会被截断,后续的输出处理即使调整宽度也无法恢复被截断的内容。
解决命令
修改Select-String的行长度限制,同时保留Out-File的宽度设置:
Select-String -Path "debug.log" -Pattern '{"id":0,"code":"OE#' -MaximumLineLength 2147483647 | Select-Object -ExpandProperty Line | Out-File -FilePath test.log -Width 2147483647
说明
-MaximumLineLength 2147483647:将Select-String的行捕获上限设为PowerShell允许的最大值,确保完整读取长行内容Out-File -Width 2147483647:保证输出到文件时不会因控制台宽度限制再次截断内容
内容的提问来源于stack exchange,提问作者chapd3it
相关产品推荐
相关产品推荐

