You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Select-String结果输出到文件且去除行内换行

修复PowerShell日志提取的行内换行问题

原始代码

$ccToSearch =@('"1008-0000108812"', "1008-0000105138", "1008-0000120485")

$ccToSearch =  $ccToSearch -split ',' | ForEach-Object { $_.Trim() }

$results5 = Select-String -Path "C:\Logs\tm1s202205*.log" -Pattern $ccToSearch 

$results5 | Out-File -FilePath "C:\Users\User\Desktop\log.txt" 

当前问题

提取后的日志出现行内换行,部分内容被拆分到下一行:

tm1s20220615160000.log:622:"","20220615152345","20220615152345","N","9.279340000000001e-003","0","OPEX","1008-0000108812","1008-0000750055","5760012285","Input","5555","2022","Cur
rent Cycle","Other","Direct Input","Value in Millions",""
tm1s20220615160000.log:623:"","20220615152345","20220615152345","N","1.975e-002","0","OPEX","1008-0000108812","1008-0000750055","5760012202","Input","5555","2022","Current 
Cycle","Other","Direct Input","Value in Millions",""

期望效果

每行完整显示,无行内换行:

tm1s20220615160000.log:622:"","20220615152345","20220615152345","N","9.279340000000001e-003","0","OPEX","1008-0000108812","1008-0000750055","5760012285","Input","5555","2022","Current Cycle","Other","Direct Input","Value in Millions",""
tm1s20220615160000.log:623:"","20220615152345","20220615152345","N","1.975e-002","0","OPEX","1008-0000108812","1008-0000750055","5760012202","Input","5555","2022","Current Cycle","Other","Direct Input","Value in Millions",""

解决方案

问题根源:Select-String返回的是MatchInfo对象,直接用Out-File输出时会默认截断长行;同时原始日志可能包含软换行符,导致内容被拆分。

修改后的代码

$ccToSearch = @('"1008-0000108812"', "1008-0000105138", "1008-0000120485")

# 原代码中-split ','是多余操作,数组本身无需拆分,直接使用即可
# $ccToSearch = $ccToSearch -split ',' | ForEach-Object { $_.Trim() }

$results5 = Select-String -Path "C:\Logs\tm1s202205*.log" -Pattern $ccToSearch 

# 提取完整行内容,移除行内软换行符,指定宽度避免自动截断
$results5.Line | ForEach-Object { $_ -replace '\r?\n', '' } | Out-File -FilePath "C:\Users\User\Desktop\log.txt" -Width 2000

关键说明

  • -replace '\r?\n', '':移除行内的软换行符(兼容Windows和Unix换行格式)
  • -Width 2000:指定输出宽度,避免PowerShell自动截断长行,可根据日志实际长度调整数值
  • 移除了原代码中多余的数组拆分步骤,因为$ccToSearch本身就是字符串数组,直接传入Select-String即可

内容的提问来源于stack exchange,提问作者Luiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 13:37:02