sed - 在汇合空间中替换jira宏

时间:2017-07-15 13:45:26

标签: sed confluence

认为我非常接近我的解决方案,但我不知道这个表达式有什么问题。我在编辑器中检查了这个表达式,工作正常。但是同样适用于sed,所以我可以使用shell脚本运行它。

我做了什么。 我导出了Confluence Space并喜欢导入到另一个Confluence。这种融合不知道JIRA服务器是一个应用程序链接,它不会得到。

这就是为什么我想用链接替换宏。

<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\/\1/gI' "confluence-space/entities.xml"

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

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

(?将搜索零或一次......没有任何内容,因为(不被解释为文字字符,而是作为开放捕获组。

试试这个:

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