认为我非常接近我的解决方案,但我不知道这个表达式有什么问题。我在编辑器中检查了这个表达式,工作正常。但是同样适用于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:前面的正则表达式无效。
提前致谢。
答案 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