【发布时间】:2021-04-25 17:28:16
【问题描述】:
我希望 xml 数据中的数据为 csv 格式
此问题中提供了要测试的 xml 数据 extract data between tags <t> </t>
注意:xml文件中的数据可能不同,Header也会不同
在这个 xml 中它们是 3 个标题 -> NAME,AGE,COURSE
我已经使用下面的命令来获取水平格式的数据,全部在一行中:
awk -F'(</*t>|</*t>)' 'NF>1{for(i=2;i<NF; i=i+2) printf("%s%s", $i, (i+1==NF)?ORS:OFS)}' OFS=',' demo.xml
运行上述命令后,输出如下 "NAME","Vikas","Vijay","Vilas","AGE","24","34","35","COURSE","MCA","MMS","MBA"
我是如何尝试实现逻辑的
从用户获取参数,他们将有多少个标头值
在上面的 xml 中,它们是 3 个标头 -> NAME,AGE,COURSE
header_count=3
所以 3 个标题意味着将有 3 个值,例如:HEADER + 3 值
NAME,Vikas,Prabhas,Arjun -> 这将转置到下面
输出:
NAME,
Vikas,
Prabhas,
Arjun,
标头值 AGE -> AGE + 3 值也是如此
AGE,25,34,21 will be transpose to vertical
AGE
25
34
21
标题值也是如此 COURSE -> COURSE + 3 值
COURSE,MCA,MBA,MMS will be transpose to vertical
COURSE
MCA
MBA
MMS
**结合姓名、年龄、课程的所有数据后的预期输出**
NAME,AGE,Course
Vikas,"25",MCA
Prabhash,"34",MBA
Arjun,"21",MMS
【问题讨论】:
-
请澄清您的问题的标题。您说的是数组,但您发布的代码中没有数组,而且事实上,POSIX shell 也没有数组。