首页 > 解决方案 > 在 PowerShell 中使用正则表达式提取文本部分并输出到新文件

问题描述

我有一个 200MB 的 XML 日志文件,我想从本质上过滤到结果的子集。

日志文件的内容由如下元素组成:

<sample No=1 Name=MyText>blah blah blah</sample>

在 Notepad++ 中查看这些内容时,我可以通过正则表达式搜索找到每个匹配文本块:

MyText.*?</sample>

我尝试了以下 PowerShell 脚本:

$input_path = ‘c:\temp\input.xml’
$output_file = ‘c:\temp\output.xml’
$regex = 'MyText.*?</sample>'
Select-String -Path $input_path -Pattern $regex -AllMatches |
    % { $_.Matches } |
    % { $_.Value } > $output_file

我没有收到任何错误,并且 output.xml 已生成但不包含任何数据。当我在 Notepad++ 中执行相同的正则表达式搜索时,我得到了结果,所以我不确定我在哪里出错了。我没有收到任何错误消息,但是对于文件中的数据量,脚本似乎在很短的时间内完成,所以我不完全相信它实际上解析了整个文件。

谁能建议我哪里出错了?

标签: powershell

解决方案


推荐阅读