
タグ内とタグ内でのみすべて&
をに置き換える必要があります。また、inを変更しないでください。入力例:#
<faultstring> ... </faultstring>
&
&
123&&<faultcode>IBM.Error<faultstring>special character & and one converted &</faultstring></faultcode>&&123
予想出力:
123&&<faultcode>IBM.Error<faultstring>special character # and one converted &</faultstring></faultcode>&&123
以下は境界線に適用されますが、次に&
置き換えられます。#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
これを交換するには、以下を&
使用します。
sed -e :1 -e 's@\(<faultstring>.*\)&\([^amp;]\)\(.*</faultstring>\)@\1\&\2\3@;t1' file