XML에서 &를 올바르게 바꾸시겠습니까?

XML에서 &를 올바르게 바꾸시겠습니까?

& '&'를 다음과 같은 XML 특수 문자 제외 로 바꾸고 싶습니다 .

"   "
'   '
<   &lt;
>   &gt;
&   &amp;

나는 언급된 방법을 시도했다.두 문자열 사이에 지정된 문자를 바꾸시겠습니까?그리고지정된 XML 태그에서 XML 엔터티 `&`에 있는 항목이 아닌 모든 `&`를 `#`으로 교체하고 sed로 교체나에게는 효과가 없는 것 같습니다.

답변1

Perl 원라이너 사용:

perl -pe 's/&(?!(quot|apos|lt|gt|amp);)/&amp;/g'

-p플래그는 Perl이 sed처럼 동작하도록 만들고(STDIN 라인을 반복하고, 작업을 수행하고, STDOUT으로 인쇄), -e파일이 아닌 인수에서 명령을 읽도록 지시합니다.

정규식 대체는 다음을 수행합니다.

  • 성냥&
    • 뒤따르지 않음
    • quot또는 apos...amp
    • 세미콜론
  • 로 교체하다&amp;
  • 온라인의 모든 경기에 대해.

sed처럼 사용하려면 예를 들어

perl -pe 's/&(?!(quot|apos|lt|gt|amp);)/&amp;/g' < my-file.xml
./myscript.sh | perl -pe 's/&(?!(quot|apos|lt|gt|amp);)/&amp;/g'

관련 정보