Замена всего `&`, но не единственного в XML-сущности `& amp;` с `#` с sed в заданном теге XML

Мне нужно было заменить все & # , внутри и внутри <faultstring> ... </faultstring> . Кроме того, & in &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' 

Кроме того, я заменяю эти шаблоны inplace файлом.

PS: Я создал новый вопрос, чтобы избежать путаницы в моем предыдущем потоке . Если вы, ребята, обнаружили, что это может быть объединено в предыдущем потоке, пожалуйста, сделайте это. Я просто надеюсь, что новый поток привлечет людей, чтобы быстро ответить, и свести к минимуму путаницу.

Linux и Unix - лучшая ОС в мире.