powershell - 在 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++ 中执行相同的正则表达式搜索时,我得到了结果,所以我不确定我在哪里出错了。我没有收到任何错误消息,但是对于文件中的数据量,脚本似乎在很短的时间内完成,所以我不完全相信它实际上解析了整个文件。
谁能建议我哪里出错了?
解决方案
推荐阅读
- excel - 使用 VBA 和 Selenium 访问网页正文
- f# - OneTimeSetUp:SetUp 或 TearDown 方法的签名无效:System-IDisposable-Dispose
- angular - 如何动态更改字体/背景的颜色
- html - 使用 Selenium 定位列表中的 html 元素
- javascript - 在 Javascript 中对注入的 html 应用过渡
- python - 在 jupyter lab 中重命名文件或目录快捷方式?
- node.js - 我应该硬编码 81000 字符串常量吗?
- c# - 如何使用(数据值属性)传递多个复选框值
- python - 如何为图像的每一帧将二维数组写入 csv?
- excel - 使用格式化文本作为匹配函数查找值