1

我想在文件中找到一个特定的字符串并将其替换如下:

在文件 test*.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 非常缺乏经验。

4

1 回答 1

0

我宁愿使用支持 XML 的工具来操作 XML,这样您就可以保持格式良好、字符/实体编码等。

XMLStarlet运行良好。它将允许您使用 XPath 来指定 XML 中的特定节点并更改这些节点。我不认为你真的应该担心缩进等。这通常被视为格式化。

于 2012-12-21T11:15:21.363 回答