【发布时间】:2021-03-22 11:20:11
【问题描述】:
我希望使用 sed 或 awk 实用程序从多个相似的 XML 文件中删除“error_mail”和“succeed_mail”节点。
使用 sed ,我尝试使用以下命令..但它不起作用
sed -i /<action name="succeed_mail">/,/<\/action>/d *.xml
这里是示例文件(test.xml),如下所示:-
输入 XML 文件:- test.xml
<workflow>
<action name="start"
-----
-----
</action>
<action name="error_mail">
<email xmlns="uri:oozie:email-action:0.1">
<to>abc@xyz.com</to>
<cc>abc@xyz.com</cc>
<subject>Batch Failed</subject>
<body>Batch Failed at ${node}</body>
</email>
<ok to="killjob"/>
<error to="killjob"/>
</action>
<action name="succeed_mail">
<email xmlns="uri:oozie:email-action:0.1">
<to>abc@xyz.com</to>
<cc>abc@xyz.com</cc>
<subject>Batch Succeed</subject>
<body>Batch completed</body>
</email>
<ok to="end"/>
<error to="end"/>
</action></r>
</workflow>
--------所需的输出:-
test.xml
<workflow>
<action name="start"
-----
-----
</action>
</workflow>
【问题讨论】:
-
始终将脚本括在引号中:
sed 'foo',而不是sed foo。此外,“它不工作”是最糟糕的问题陈述 - 告诉我们它以何种方式不工作(错误输出、无输出、错误消息等),以便我们可以最好地帮助您解决您遇到的问题,而不是可能的一些问题我们认为您可能遇到的其他问题。