指定されたXMLタグのすべての「&」を置き換えるには、sedを使用してください。ただし、XMLエンティティ「&」の「&」を「#」に置き換えないでください。

指定されたXMLタグのすべての「&」を置き換えるには、sedを使用してください。ただし、XMLエンティティ「&」の「&」を「#」に置き換えないでください。

タグ内とタグ内でのみすべて&をに置き換える必要があります。また、inを変更しないでください。入力例:#<faultstring> ... </faultstring>&&amp;

123&&<faultcode>IBM.Error<faultstring>special character & and one converted &amp;</faultstring></faultcode>&&123

予想出力:

123&&<faultcode>IBM.Error<faultstring>special character # and one converted &amp;</faultstring></faultcode>&&123

以下は境界線に適用されますが、次に&amp;置き換えられます。#amp;

sed -e :1 -e 's@\(<faultstring>.*\)&\(.*</faultstring>\)@\1#\2@;t1'

また、これらのパターンをファイルに置き換えます。

PS:混乱を避けるために新しい質問を作成しました。私の前のトピック。これが前のスレッドにマージできると思われる場合は、そうします。新しい手がかりは、人々が迅速に答え、混乱を最小限に抑えることを願っています。

ベストアンサー1

これは私にとって効果的です。

sed -e :1 -e 's@\(<faultstring>.*\)&\([^amp;]\)\(.*</faultstring>\)@\1#\2\3@;t1' file

これを交換するには、以下を&amp;使用します。

sed -e :1 -e 's@\(<faultstring>.*\)&\([^amp;]\)\(.*</faultstring>\)@\1\&amp;\2\3@;t1' file

おすすめ記事