【发布时间】:2019-06-11 07:39:37
【问题描述】:
<mstr>
<srt>Payment towards File# 1234</srt>
<msg>info for treat sxc
Pay to shankar A/C#999999
bank of ooty</msg>
<ins>info for party BB
Pay to kumar A/C#999999
state bank</ins>
</mstr>
我想像下面这样转换上面的 XML,这意味着数据包装在开始和结束标记之间的下一行。应该在一行中,如下所示。
<mstr>
<srt>Payment towards File# 1234</srt>
<msg>info for treat sxc Pay to shankar A/C#999999 bank of chen</msg>
<ins>info for party BB Pay to kumar A/C#999999 state bank</ins>
</mstr>
我通过引用网络答案尝试了以下方式。想了解下面的 awk 命令是否还在寻找任何其他替代方法来解决我的问题?
awk '{printf /^</&&!/^<\//?RS $0:$0}'
【问题讨论】:
-
您找到的答案对您有用吗?如果没有,你能显示它给出的输出吗?
-
不要使用面向行的工具来解析 XML。
-
是的,它起作用了,我想了解 awk 是如何应用在这里的
-
有人称它为summoning the daemon,其他人称它为the Call for Cthulhu,很少有人称它为turned mad and met the Pony。简而言之,永远不要使用正则表达式解析 XML 或 HTML!您是否尝试过诸如
xmlstarlet、xmllint或xsltproc之类的 XML 解析器? -
xmllint 我用过这个,但没有帮助
标签: xml bash shell unix formatting