如果节点没有特定标签,我需要从文件中删除它们。 如何使用 awk、sed 或 grep 只保留具有名称标签的节点?
输入:
<node user="user1">
<tag k="name" v="name1"/>
</node>
<node user="user2">
<tag k="network" v="nw1"/>
</node>
期望的输出:
<node user="user1">
<tag k="name" v="name1"/>
</node>
最佳答案
如果您的文件真的那么简单,使用 GNU awk 处理多字符 RS:
$ awk -v RS='</node>\n' '/v="name1"/{printf "%s%s", $0, RT}' file
<node user="user1">
<tag k="name" v="name1"/>
</node>
关于xml - 使用 Unix 命令行删除 XML 节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40828185/