今天我花了一整天的时间试图找到合适的解决方案,但我做不到。我的问题:
我有一个 XML 文件,其标签包含多个相同的标签。 示例:
<TASK INSTANCE />
<WORKFLOWLINK CONDITION=""/>
<WORKFLOWLINK CONDITION=""/>
我想在第一个 <WORKFLOWLINK
之前添加另一个 XML 文件的内容.我遇到的问题是这个文件充满了双引号和斜线。我试过替换它们并转义它们,但无济于事。
我的尝试主要在以下方面达到高潮:
sed -e "0,/<WORKFLOWLINK/ /<WORKFLOWLINK/{ r ${filename}" -e "}" ${sourcefile}
如果这还不够清楚,我会获取准确的数据以便您查看。
最佳答案
为了 sed 的乐趣:
sed -e "0,/<WORKFLOWLINK/{/<WORKFLOWLINK/{r ${sourcefile}" -e"}}"
诀窍是在您的第一个地址范围条件 0,/<WORKFLOWLINK/
之后开始一个新的“模式/命令”对.
不理解两个嵌套模式/地址,第一个模式后必须有命令。使用额外的一对卷发 {}
为你做。
除了在 sed 中进行大脑锻炼之外,@EdMorton 正确地推荐使用 XML 处理器。他对 MCVE 的要求也是合适的。我不得不做一些猜测,看看你想要什么,我希望我猜对了。
mcve 至少应该包括
- 定义您的问题的错误消息或问题描述
- 环境变量的初始化
- 一些样本输入;不是原始数据
你肯定会早点得到答案,而且(如果我的答案不能让你满意)现在可能是一个更好的答案。
所以,在你下一个问题之前,请接听https://stackoverflow.com/tour。
GNU sed 版本 4.2.1
GNU bash,版本 3.1.17(1)-release (i686-pc-msys)
关于Linux:将文件中的第一个字符串替换为包含引号和斜杠的其他文件的内容。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43853034/