在Powershell中,我试图替换以下内容:
<Name>RANDOMTEXT</Name>
</Member>
使用
<Name>RANDOMTEXT</Name></Member>
我使用以下代码:
$content = [System.IO.File]::ReadAllText(<XMLFILE>).Replace("</Name>`n</Member>","</Name></Member>")
[System.IO.File]::WriteAllText(<NEWFILE>, $content)
替换不起作用。
有没有办法做到这一点?
答案 0 :(得分:3)
如果您希望能够同时处理Windows和Unix样式的换行符,我建议使用RegEx replace(-replace
运算符)而不是静态字符串(方法)版本。
Windows样式是回车后跟换行符(2个字符,CRLF
或"`r`n"
),Unix样式只是换行符(LF
或"`n"
)
使用正则表达式替换:
$content = [System.IO.File]::ReadAllText(<XMLFILE>) -replace '</Name>\r?\n</Member>','</Name></Member>'
或替换所有换行符:
$content = [System.IO.File]::ReadAllText(<XMLFILE>) -replace '\r?\n'
问号?
使CR
成为可选(匹配0或1),因此这将包含所有换行符。
答案 1 :(得分:1)
尝试.Replace("</Name>" + [Environment]::NewLine + "</Member>","</Name></Member>")
或.Replace("</Name>`r`n</Member>","</Name></Member>")
在一般说明中,如果您只想删除新行,则只需尝试[System.IO.File]::ReadAllText(<XMLFILE>).Replace([Environment]::NewLine,"")