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 に答える