지정된 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'

또한 이러한 패턴을 파일로 대체합니다.

추신: 혼란을 피하기 위해 새로운 질문을 만들었습니다.내 이전 주제. 이것이 이전 스레드에 병합될 수 있다고 생각되면 그렇게 하십시오. 새로운 단서가 사람들이 신속하게 답변하고 혼란을 최소화할 수 있기를 바랍니다.

답변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

관련 정보