0

パッチを当てる整形式でないXMLファイルが何千もあります。

それらの多くには次の問題が含まれています:(<someTag attr='text [< 99]'/>角括弧内の左の角度に注意してください)。

[<のすべてのインスタンスを[&lt;for*.xmlに置き換えるsed式を記述したいと思います。

sed -n 19p myFile.xml期待どおりに戻ります<someTag attr='text [<99]'/>

echo '[<45' | sed -n '/\[</p'期待どおりに戻ります[<45

ただし、sed -n '/\[</p' myFile.xml何も返さないので、echoではなくファイルに対してその式を使用する場合は、明らかに別の構文が必要です。どの構文を使用する必要がありますか?

また、これを行ったら、私の計画は次のようなことをすることです

sed -i -n 's/correct expression/\[&lt;/g/p' *.xmlすべてのファイルのすべての一致に対して実行し、デバッグに役立つ新しいバージョンを出力します。それは合理的だと思いますか?

ところで、sedは使用するツールのように見えましたが、Linuxで実行される他のソリューションを使用してもまったく問題ありません。

ありがとう!

4

1 に答える 1

0

ただし、sed -n '/\[</p' myFile.xml何も返さないので、echoではなくファイルに対してその式を使用する場合は、明らかに別の構文が必要です。

うーん、私のために働く:

echo '[<45' > test.xml
sed -n '/\[</p' test.xml

を返します[<45

そうは言っても、交換したい場合は、次のようなことをしてください

sed 's/\[</[\&lt;/g'

たとえば、すべてのxmlファイルを直接変更するには、次のようにします。

sed -i 's/\[</[\&lt;/g' *.xml

(-iスイッチはファイルを直接変更するためのものです。それ以外の場合、ファイルの内容はstdoutに送信されます)

それは合理的だと思いますか?

確かに、それがsedの目的です。

于 2013-02-21T20:12:57.907 に答える