![여는 태그와 XML의 모든 항목을 일치시킨 후 닫는 태그를 검색하고 바꿉니다.](https://linux55.com/image/193184/%EC%97%AC%EB%8A%94%20%ED%83%9C%EA%B7%B8%EC%99%80%20XML%EC%9D%98%20%EB%AA%A8%EB%93%A0%20%ED%95%AD%EB%AA%A9%EC%9D%84%20%EC%9D%BC%EC%B9%98%EC%8B%9C%ED%82%A8%20%ED%9B%84%20%EB%8B%AB%EB%8A%94%20%ED%83%9C%EA%B7%B8%EB%A5%BC%20%EA%B2%80%EC%83%89%ED%95%98%EA%B3%A0%20%EB%B0%94%EA%BF%89%EB%8B%88%EB%8B%A4..png)
WordPress 내보내기 XML 파일에서 다음과 같은 검색 및 바꾸기 솔루션을 찾으려고 합니다.
문자열 찾기
<content:encoded><![CDATA[HERE GOES ANY POSSIBLE POSTS TEXT including HTML tags]]></wp:meta_value>
닫는 태그를
</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