sed - 在 confluence 中替换 jira 宏 space

sed - replace jira macro in confluence space

我认为我已经非常接近我的解决方案了,但我看不出这个表达式有什么问题。我在编辑器中检查了这个表达式,效果很好。但同样适用于 sed,因此我可以使用 shell 脚本 运行 它。

我做了什么。 我导出了一个 Confluence Space 并想导入到另一个 Confluence。这个 confluence 不知道 JIRA Server 作为一个 Application Link 并且它不会得到。

所以这就是我想用 link 替换宏的原因。

<ac:structured-macro ac:name="jira"><ac:parameter ac:name="columns">key,summary,type,created,updated,due,assignee,reporter,priority,status,resolution</ac:parameter><ac:parameter ac:name="server">JIRA</ac:parameter><ac:parameter ac:name="serverId">797a864e-7adf-3e88-ae1f-f35e5aade3f4</ac:parameter><ac:parameter ac:name="key">IT-1234</ac:parameter></ac:structured-macro>

我尝试了以下方法来替换宏。但还没有奏效。谁能帮我解释一下这个表达式,并解释一下我做错了什么?

sed -i -E 's/<ac:structured-macro ac:name="jira">.*?((?:IT|BI)-[0-9]+).*?<\/ac:structured-macro>/http:\/\/www.myconfluence.com\/browse\//gI' "confluence-space/entities.xml"

我得到的结果是: sed:-e 表达式 #1,字符 130:前面的正则表达式无效。

提前致谢。

你不能在 sed 中使用 (?:x)(非捕获组)语法。

(? 将搜索零次或一次出现的……什么都没有,因为 ( 不被解释为乱码字符,而是作为开始捕获组。

试试这个:

sed -i -E 's/<ac:structured-macro ac:name="jira">.*?((IT|BI)-[0-9]*).*<\/ac:structured-macro>/http:\/\/www.myconfluence.com\/browse\//g' file