我想在文件中找到一个特定的字符串,并将其替换为以下内容:
在文件测试* .xml
中<root>
<list>
<item ID="abc">
<amount>1</amount>
<text>TEST</text>
</item>
<item ID="cde">
<amount>1</amount>
<text>TEST 2</text>
</item>
</list>
</root>
用
替换它<root>
<list>
<item ID="abc">
<amount>0</amount>
<text>TEST</text>
</item>
<item ID="cde">
<amount>1</amount>
<text>TEST 2</text>
</item>
</list>
</root>
到目前为止,我有这个:
find . -name "test*" -print | xargs sed -i 's/<item ID=\"abc\">/<item ID=\"abc\">/g'
嗯,它当然没有,但我不知道我怎么能“跳过”换行符和空格。我不允许改变这些凹痕。 我尝试用一个单行程来做,但是一个小的bash脚本也可以做到这一点,但我对bash缺乏经验。
答案 0 :(得分:0)
我宁愿使用XML感知工具来操作XML,这样您就可以保持格式良好,字符/实体编码等。
XMLStarlet效果很好。它允许您使用XPath指定XML中的特定节点并更改它们。我认为你不应该真的担心缩进等。这通常只被视为格式化。