我想在一个大的 xml 文件中找到一段文本,并想用其他文本替换。文件大小约为(50GB)。我想在命令行中执行此操作。我正在查看 PowerShell,想知道它是否可以处理大尺寸。
目前我正在尝试这样的事情,但它不喜欢它
Get-Content C:\File1.xml | Foreach-Object {$_ -replace "xmlns:xsi=\"http:\/\/www\.w3\.org\/2001\/XMLSchema-instance\"", ""} | Set-Content C:\File1.xml
我要替换的文字是xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
带有一个空字符串""
.
问题
- PowerShell 可以处理大型数据吗?
文件
- 我不希望替换发生在
内存并更喜欢流式传输假设
这不会使服务器
它的膝盖。
- 我还可以采取其他方法吗(不同的
工具/策略?)
Thanks
我有类似的需求(并且类似地缺乏 powershell 经验),但从本页上的其他答案中拼凑出一个完整的答案,再加上更多的研究。
我还想避免正则表达式处理,因为我也不需要它——只是一个简单的字符串替换——但是在一个大文件上,所以我不想将它加载到内存中。
这是我使用的命令(添加换行符以提高可读性):
Get-Content sourcefile.txt
| Foreach-Object {$_.Replace('http://example.com', 'http://another.example.com')}
| Set-Content result.txt
效果很好!从来没有占用太多内存(很明显它没有将整个文件加载到内存中),只是缓慢地运行了几分钟然后完成。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)