xml - 使用带有文本文件的 awk 命令创建 XML
问题描述
我有一个包含以下数据的文本文件,需要在 shell 脚本中使用 awk 命令将其转换为 xml。
Package1,class1
Package1,class2
Package2,Page1
Package2,Page2
该文本文件需要转换为如下格式所示的 xml。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<members>class1</members>
<members>class2</members>
<name>Package1</name>
</types>
<types>
<members>Page1</members>
<members>Page2</members>
<name>Package2</name>
</types>
<version>48.0</version>
</Package>
我是 shell 脚本的新手。请帮帮我....
解决方案
这应该让你开始
$ awk -F, 'function wrap(t,v) {return "<"t">"v"</"t">"}
function rec() {return wrap("types", members ORS wrap("name",$1) ORS)}
p && p!=$1 {print rec(); members=""}
{p=$1; members=members ORS wrap("member",$2)}
END {print rec()}' file
<types>
<member>class1</member>
<member>class2</member>
<name>Package2</name>
</types>
<types>
<member>Page1</member>
<member>Page2</member>
<name>Package2</name>
</types>
建立记录,直到名称更改并打印。
推荐阅读
- flutter - StreamProvider 不更新列表
- jquery - django admin - 如何在文件末尾添加 javascript
- php - 类 App\Http\Controllers\ManagerLoginController 不存在
- swift - 哪个更好 removeAll of Array 或再次初始化 Array?
- prometheus - 正则表达式对系列的普罗米修斯率
- node.js - Express-session 未在 Safari 浏览器中设置 cookie 数据
- php - 当无限滚动充电循环其他ajax被打破
- css - 为什么浏览器不能正确读取字体?
- python - 神经网络在更多的迭代中变得更糟
- scope - 在 Julia 中,有没有办法将变量从本地范围传递到封闭的本地范围?