awk读取XML文件并格式化数据
来源:互联网 发布:win10 dvd播放软件 编辑:程序博客网 时间:2024/06/05 01:09
shell awk读取XML文件格式化数据
项目组内收到一个需求,需要从xml格式的接口数据,过滤出指定的内容并格式化。从示例demo.xml文件中读取fileHeader标签中startTime、endTime,eNB标签中的id、object标签的中MmeCode、MmeGroupId、MmeUeS1apId、TimeStamp、id,v标签中的第1、3、5、6列的信息,如果object标签中有多个v标签,按顺序增加。输入:xml文件
输出: 1. fileHeader.startTime 2. fileHeader.endTime 3. eNB.id 4. object.MmeCode 5. object.MmeGroupId 6. object.MmeUeS1apId 7. object.TimeStamp 8. object.id 9. v.1 10. v.3 11. v.5 12. v.6 13. 行数(object标签下v标签数) 14. 回车换行
XML示例文件demo.xml:
<?xml version="1.0" encoding="UTF-8"?><bulkPmMrDataFile> <fileHeader fileFormatVersion="1.0" jobid="0" reportTime="2015-12-02T00:15:00.000" startTime="2015-12-02T00:00:00.000" endTime="2015-12-02T00:15:00.000"/> <eNB id="475766" userLabel="userLabel"> <measurement> <object EventType="A1" MmeCode="216" MmeGroupId="960" MmeUeS1apId="138437309" TimeStamp="2015-12-02T00:00:01.277" id="475766-3"> <v>45 NIL 26 NIL 37900 380 NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL</v> </object> <object EventType="A2" MmeCode="216" MmeGroupId="960" MmeUeS1apId="138438730" TimeStamp="2015-12-02T00:00:01.028" id="475766-3:232:22"> <v>38 NIL 27 NIL 37902 380 NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL</v> <v>59 NIL 29 NIL 37903 389 NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL</v> <v>69 NIL 29 NIL 37903 366 NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL</v> <v>19 NIL 29 NIL 37903 390 NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL NIL</v> </object> </measurement> </eNB></bulkPmMrDataFile>
awk脚本readXml.awk:
#!/usr/bin/awk -f/<fileHeader+/ {st=$5;et=$6;next}/<eNB+/ {eid=$2;next}/<object+/ {fobject=1;omc=$3;omg=$4;oms=$5;ots=$6;oid=$7;next}/<v\>+/ && NF == 46 {fvol=1;fvol1=$1;fvol3=$3;fvol5=$5;fvol6=$6;formatData();NR+=1;next}formatData()END { for( i = 0; i < arridx; i++ ) printf("%s\n",allstr[i]) }function rStr(str) { gsub(/[a-zA-Z0-9]+*\=\"/,"",str) gsub(/\"+|\"\/>/,"",str) gsub("<v>", "", str) gsub(">","",str) gsub("\n","",str) return str}function formatData() { if(fvol) { allstr[arridx]=rStr(st)","rStr(et)","rStr(eid)","rStr(omc)","rStr(omg)","rStr(oms)","rStr(ots)","rStr(oid)","rStr(fvol1)","rStr(fvol3)","rStr(fvol5)","rStr(fvol6)","fobject fobject += 1 } arridx = arridx + fvol fvol=0}
执行结果:
0 0
- awk读取XML文件并格式化数据
- JQuery读取XML文件数据并显示
- 读取 生成 格式化 XML 文件
- asp.net 读取Xml文件并进行DropDownList数据绑定
- 使用JDOM读取XML文件,并输出其中的数据
- android 读取excel数据并保存为xml文件
- dom4j处理xml文件,读取xml字符串,格式化xml文件
- 利用awk格式化数据
- jsp导出excel文件并格式化数据
- 读取excel数据并保存为xml
- JAVA读取XML文件放在内存中,如果XML文件发生变化时,重新读取XML文件,并覆盖内存中的数据
- AWK读取文件
- MFC读取XML文件并解析
- java读取xml文件并分页显示
- java 读取xml文件并输出
- 读取XML文件并生成DataTable
- JavaScript读取并解析XML文件
- 【代码积累】xml文件读取并输出
- 【动态规划(最大子序列和)】:poj2479,Maximum sum
- C#类中属性的定义
- TCP/IP、Http的区别
- UVA 12299 RMQ with Shifts(线段树单点更新,最值查询)
- perl多线程、socket
- awk读取XML文件并格式化数据
- Buy Tickets
- [Android]Context泄露之谜:Handle & 内部类
- Android Material Design之CoordinatorLayout+AppBarLayout实现上滑隐藏ToolBar
- servlet复习(四)过滤器
- Windows下OpenCV+QT开发环境配置
- LeanCloud
- Landsat8可以免费下载了
- 我的编程之旅