Text-Processing

匹配開始標籤+XML中的任何內容後搜尋並替換結束標籤

  • July 19, 2021

我正在嘗試在 WordPress 導出 XML 文件中找到搜尋和替換的解決方案,該文件將:

  1. 查找字元串
<content:encoded><![CDATA[HERE GOES ANY POSSIBLE POSTS TEXT including HTML tags]]></wp:meta_value>
  1. 將結束標籤替換</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>但不是。

我們將利用CDATA節的屬性,即它不能在其中包含子字元串]]>

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

引用自:https://unix.stackexchange.com/questions/658919