查找字符串并替换换行符和缩进

时间:2012-12-21 11:12:11

标签: xml linux bash shell replace

我想在文件中找到一个特定的字符串,并将其替换为以下内容:

在文件测试* .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缺乏经验。

1 个答案:

答案 0 :(得分:0)

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

XMLStarlet效果很好。它允许您使用XPath指定XML中的特定节点并更改它们。我认为你不应该真的担心缩进等。这通常只被视为格式化。