我想在一个大型xml文件中找到一段文本,并想用其他文本替换。该文件的大小约为(50GB)。我想在命令行中执行此操作。我在看Powershell,想知道它是否可以处理大尺寸。另外我想知道在powershell中转义关键操作符的语法。我是一个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“ with empty string”“。
问题
- 灿PowerShell中处理大量 文件
- 如何调用 PowerShell脚本的命令行
- 转义键 运营商在PowerShell和主要运营商的列表 的语法在PowerShell中。
- 我不希望替换发生在 内存和更喜欢流假设 ,这将不会使服务器到它的膝盖 。
- 有没有我可以采取任何其他方式(不同 工具/策略?)
感谢
@Keith,您相信PowerShell中)我想也许担心OutOfMemoryException,因为50gb足够大以收集少量内存泄漏。只是一个猜测。就个人而言,我会直接使用'File.Open'并使用流并手动比较(无正则表达式)。 – stej 2010-05-06 20:41:09
而不应该使用某种XML API来执行此操作吗?只是一个想法。如果SAX或StAX在.NET中可用,则不知道;我对XML的工作很少,但是做一个字符串替换听起来不对。 – Joey 2010-05-06 21:08:39
.NET有一个只向前的游标式阅读器(XmlReader/XmlTextReader) - 一种与SAX推入方法有点不同的拉机制。这有点乏味,但是当整个Xml文档不适合内存时,这是一个好方法。 – 2010-05-07 04:04:44