我正在尝试在 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