여는 태그와 XML의 모든 항목을 일치시킨 후 닫는 태그를 검색하고 바꿉니다.

여는 태그와 XML의 모든 항목을 일치시킨 후 닫는 태그를 검색하고 바꿉니다.

WordPress 내보내기 XML 파일에서 다음과 같은 검색 및 바꾸기 솔루션을 찾으려고 합니다.

  1. 문자열 찾기

    <content:encoded><![CDATA[HERE GOES ANY POSSIBLE POSTS TEXT including HTML tags]]></wp:meta_value>
    
  2. 닫는 태그를 </wp:meta_value>다음으로 바꾸십시오.</content:encoded>

문제는 XML 파일에 </wp:meta_value>시작 태그뿐만 아니라 다른 많은 닫는 태그 가 있다는 것입니다 <content:encoded>.

내가 검색한 sed 솔루션 중 어느 것도 도움이 되지 않았습니다. 어떤 bash 명령이라도 가능합니까?

PS: 내 목표는 사용자 정의 필드를 기본 WP 콘텐츠 태그로 변환하는 것입니다. 변경해야 할 원래 코드는 다음과 같습니다.

    <wp:postmeta>
        <wp:meta_key><![CDATA[page_content_0_text]]></wp:meta_key>
        <wp:meta_value><![CDATA[POST CONTENT GOES HERE]]></wp:meta_value>
    </wp:postmeta>

다음을 수행해야 합니다.

<content:encoded><![CDATA[POST CONTENT GOES HERE]]></content:encoded>

<content:encoded>XML의 각 게시물은 고유하지만 <wp:postmeta>반드시 그럴 필요는 없습니다.

답변1

우리는 섹션의 속성을 활용하겠습니다 CDATA.할 수 없다]]>다음의 하위 문자열을 포함합니다:

perl -0777 -pe '
  s{
    <content:encoded>
    <!\[CDATA\[.*?]]> \K
    </wp:meta_value>
  }[</content:encoded>]xgs;
' your_file.input

관련 정보