【发布时间】:2011-12-19 08:49:37
【问题描述】:
我有一个从多个服务器收集的预处理日志文件列表。它们采用 CSV 格式,日志文件的内容采用以下格式:
日期、时间、值1、值2、值3
我希望将单个文件与来自日志文件的文件名(具有服务器名称)的信息以及 Value1 超过日志文件中某个值的所有日期和时间进行合并,以便进一步分析。换句话说,我希望预期的输出是:
文件名1,2011/10/01,12:00:00.256,2345,210,0 文件名1,2011/10/05,13:45:36.321,2666,209,0 文件名5,2011/10/09,09:08:02.111,2100,180,0 文件名20,2011/10/15,17:09:33.256,3019,109,0 ...
我曾尝试使用 Powershell + 正则表达式来提取信息。但是,我只能获取包含我想要的值和文件名的行,或者只能获取包含日期、时间和 Value1 的行。 PowerShell 脚本是:
select-string -path "C:\Server\Logs*.csv" -pattern "([0-9]{4}/[0-9]{1,2}/[0-9]{1 ,2}),([0-9]{2}:[0-9]{2}:[0-9]{2}).[0-9]{3},([2-9][ 0-9]{3})" |选择对象-属性文件名、行号、行|导出-csv-path highload2.csv
select-string -path "C:\Server\Logs*.csv" -pattern "([0-9]{4}/[0-9]{1,2}/[0-9]{1 ,2}),([0-9]{2}:[0-9]{2}:[0-9]{2}).[0-9]{3},([2-9][ 0-9]{3})" |选择对象-展开匹配 | Foreach {$.Groups[1].Value, $.Groups[2].Value, $_.Groups[3].Value}
有没有办法得到我需要的结果?
谢谢,
【问题讨论】:
标签: regex powershell