获取内容:新行
Get-Content: new line
我有一个脚本:
(Get-Content .\test.xml).replace('VALUE', 'MY_VALUE') | Set-Content .\test.xml
(Get-Content .\test.xml).replace('VALUE_01', 'MY_VALUE_01') | Set-Content .\test.xml
当我在文件中看到结果时:
MY_VALUEMY_VALUE_01
是否可以像这样创建新行:
MY_VALUE
MY_VALUE_01
XML:
<VALUE>TEST</VALUE><VALUE_01>TEST_1</VALUE_01>
有什么想法吗?
看来我找到了解决方案:
(get-content .\test.xml) -replace 'VALUE',"`nVALUE_01" | set-content .\test.xml
(get-content .\test.xml) -replace 'VALUE_01',"`nMY_VALUE_01" | set-content .\test.xml
在将 xml 写入文件时尝试获取回车符 returns 时发现此问题。我想我会添加我的解决方案,以防其他人在这里寻找这个答案。
到目前为止唯一的答案并不理想,因为它在标签本身中添加了额外的字符,如果 xml 数据用于其他用途,可能会产生意想不到的后果。
我认为,更好的答案是让 powershell 将 xml 视为 xml 并使用 xml 对象公开的保存方法。保存方法写入格式很好的 xml.
$fileContents = [xml]((Get-Content .\test.xml) -replace "VALUE","VALUE01" )
$fileContents.save(.\test.xml)
如果要在保存文件前进行双重替换,看起来很麻烦,但本质上就是添加另一个 -replace 和一对括号。
$fileContents = [xml](((Get-Content .\test.xml) -replace "VALUE1","VALUE01" ) -replace "VALUE2","VALUE02")
$fileContents.save(.\test.xml)
如果您希望它作为一个衬里,它可能看起来像这样,为了易读性和行长,第二个替换被删除。
([xml]((Get-Content .\test.xml) -replace "VALUE","VALUE01" )).save(.\test.xml)
我个人认为当它开始变得复杂时,最好使用多行,以便于阅读和修改。
我有一个脚本:
(Get-Content .\test.xml).replace('VALUE', 'MY_VALUE') | Set-Content .\test.xml
(Get-Content .\test.xml).replace('VALUE_01', 'MY_VALUE_01') | Set-Content .\test.xml
当我在文件中看到结果时:
MY_VALUEMY_VALUE_01
是否可以像这样创建新行:
MY_VALUE MY_VALUE_01
XML:
<VALUE>TEST</VALUE><VALUE_01>TEST_1</VALUE_01>
有什么想法吗?
看来我找到了解决方案:
(get-content .\test.xml) -replace 'VALUE',"`nVALUE_01" | set-content .\test.xml
(get-content .\test.xml) -replace 'VALUE_01',"`nMY_VALUE_01" | set-content .\test.xml
在将 xml 写入文件时尝试获取回车符 returns 时发现此问题。我想我会添加我的解决方案,以防其他人在这里寻找这个答案。
到目前为止唯一的答案并不理想,因为它在标签本身中添加了额外的字符,如果 xml 数据用于其他用途,可能会产生意想不到的后果。
我认为,更好的答案是让 powershell 将 xml 视为 xml 并使用 xml 对象公开的保存方法。保存方法写入格式很好的 xml.
$fileContents = [xml]((Get-Content .\test.xml) -replace "VALUE","VALUE01" )
$fileContents.save(.\test.xml)
如果要在保存文件前进行双重替换,看起来很麻烦,但本质上就是添加另一个 -replace 和一对括号。
$fileContents = [xml](((Get-Content .\test.xml) -replace "VALUE1","VALUE01" ) -replace "VALUE2","VALUE02")
$fileContents.save(.\test.xml)
如果您希望它作为一个衬里,它可能看起来像这样,为了易读性和行长,第二个替换被删除。
([xml]((Get-Content .\test.xml) -replace "VALUE","VALUE01" )).save(.\test.xml)
我个人认为当它开始变得复杂时,最好使用多行,以便于阅读和修改。