这个脚本还只是测试用的,完全没有考虑效率等问题,只是能实现功能而已。
需求:
把68.xml文件中的号码信息处理成两行,每行一个号码信息
源文件 68.xml:
<?xml version="1.0" encoding="ISO-8859-1" standalone="yes"?>
<Result xmlns="http://schemas.ericsson.com/pg/hlr/13.5/">
<Request>
<command>HEMSCMP:MSISDNALL</command>
<starttime>2012-10-16 15:10:10</starttime>
<jobid>68</jobid>
</Request>
<CAMELSubscriptionData>
<CAMELSubscription>
<msisdn>8613*****8561</msisdn>
<CamelTriggeringDetectionPointData>
<tdptype>OCTDP</tdptype>
<tdp>2</tdp>
<sk>91</sk>
<gsa>8613749296</gsa>
<deh>0</deh>
<cch>2</cch>
</CamelTriggeringDetectionPointData>
<CamelTriggeringDetectionPointData>
<tdptype>TCTDP</tdptype>
<tdp>12</tdp>
<sk>91</sk>
<gsa>8613749296</gsa>
<deh>0</deh>
<i>false</i>
<cch>2</cch>
</CamelTriggeringDetectionPointData>
</CAMELSubscription>
<CAMELSubscription>
<msisdn>8613*****8560</msisdn>
<CamelTriggeringDetectionPointData>
<tdptype>OCTDP</tdptype>
<tdp>2</tdp>
<sk>91</sk>
<gsa>8613749296</gsa>
<deh>0</deh>
<cch>2</cch>
</CamelTriggeringDetectionPointData>
<CamelTriggeringDetectionPointData>
<tdptype>TCTDP</tdptype>
<tdp>12</tdp>
<sk>91</sk>
<gsa>8613749296</gsa>
<deh>0</deh>
<i>false</i>
<cch>2</cch>
</CamelTriggeringDetectionPointData>
</CAMELSubscription>
</CAMELSubscriptionData>
</Result>
处理脚本 for.sh:
#!/bin/bash
#把源文件68.xml中用<>关键字</>标注出来的行改成<>+空格+关键字+空格+</>
cat 68.xml | sed 's/>/> /' |sed 's/<\// <\//'
if [ -f re.txt ]; then
rm re.txt #re.txt用来保存最终处理结果
rm re.txt.int #re.txt.init用来保存中间结果
else
echo "re.txt not exist"
fi
#因为需求要根据号码来处理数据,所以把号码所在的行号保存到文本中,以此作为循环的依据
sed -n "/<msisdn>/=" 68.xml >number.txt
#把每个号码所在的行号读取到数组array1中
array1=($(awk '{print $1}' number.txt))
#循环,开始遍历68.xml
for((i=0;i<${#array1[@]};i++))
do
#每遍历一个号码都清空re.txt.ini
cat /dev/null > re.txt.ini
#注意:在sed中可以使用参数
msisdn1=`sed -n "${array1[i]}p" 68.xml |awk '{print $2}'`
echo $msisdn1 >>re.txt.ini
#确定子循环的起点、终点
let "beginnum=${array1[i]}+2"
let "endnum=${array1[i]}+16"
#把起点和终点间的行,用sed ,awk保存到数组array2中
array2=($(sed -n "${beginnum}","${endnum}p" 68.xml |awk '{print $2}'))
for ((j=0;j<${#array2[@]};j++))
do
echo ${array2[j]} >>re.txt.ini
done
#现在保存到re.txt.init中的数据是按列存放的,需要改成按行存放
#sed 's/OCTDP//' ,是用空格替换字符OCTDP,注意这里一定要用printf,要是用print,结果会出现:
#%s %s 2 %s 91 %s 8613749296 %s 0 %s 2 %s %s 12 %s 91 %s 8613749296 %s 0 %s false %s 2
echo -e `awk '{printf "%s ",$1}' re.txt.ini |sed 's/OCTDP//' |sed 's/TCTDP//'` >> re.txt
done
分享到:
相关推荐
Python由于其强大的库支持和简洁的语法,是处理XML的理想选择。 首先,我们需要理解Python如何处理XML文件。Python中有几个库可以处理XML,最常用的是`xml.etree.ElementTree`。这个库提供了解析XML文档、创建新的...
这些脚本可能使用XML解析库,如DOM、SAX或Pull解析器来读取和处理XML数据,然后执行相应的操作。 在实际应用中,这样的脚本可能包含以下部分: 1. **XML结构**:定义服务流程的开始、结束节点以及中间的各个步骤,...
本代码实现了用python处理svn log数据(xml格式),把Log的数据转化为一个python的数据结构,方便作更进一步数据挖掘!
使用Lotusscript编写代理,我们可以编写脚本来解析XML数据,然后根据需要执行操作,如更新数据库记录、发送邮件等。 在提供的压缩包文件中,`xmlOpt.lss`可能是一个包含了处理XML的Lotusscript库或类的文件,可以...
6. **可能的辅助脚本**:用于数据处理、结果可视化或其他辅助任务。 使用这样的测试脚本,我们可以有效地评估VoIP系统的性能,包括呼叫建立成功率、呼叫处理速度、资源占用率等关键指标。通过不断调整脚本参数,...
这些类允许程序逐节点地处理XML文档,提取订单信息如客户名、商品、数量、总价等。 2. **数据验证**:在读取XML订单数据时,系统可能会对数据进行验证,确保符合预定义的订单格式和业务规则,例如检查价格是否为...
`XMLQuery`允许用户编写XQuery脚本来处理XML数据,并将结果转换为XML或关系表形式。 ```sql SELECT xmlquery( 'for $j in ora:view("jobs")/ROW return <id>{fn:string($j/ID)} <name>{fn:string($j/NAME)} ...
XMLDOM(XML Document Object Model)是用于处理XML文档的一个接口,它是W3C制定的一套标准,允许程序和脚本动态地访问和更新XML文档的内容、结构和样式。在这个chm格式的文件“XMLDOM对象方法手册”中,很显然包含...
6. 自定义优化:虽然自动化工具能大大减轻工作量,但有时可能需要对生成的代码进行调整,比如优化SQL语句、添加注解或处理特殊逻辑。 通过这样的自动化流程,"mybatis_getProgram"可能就是一个实现上述功能的工具或...
例如,你可以创建一个过程,遍历表数据,使用XMLElement生成每个记录的XML元素,最后组合成完整的XML文档。 4. **XSLT转换**:如果需要根据特定样式生成XML,可以结合使用XSL(可扩展样式表语言)和XSLT(XSL转换)...
6. **错误处理和调试**:编写脚本时,良好的错误处理机制是关键,了解如何使用try-except、日志记录以及调试技巧可以帮助定位和修复问题。 7. **版本控制**:使用Git或其他版本控制系统可以跟踪脚本的更改历史,...
通过这个例子,你可以学习到如何在Oracle数据库环境中有效地处理XML数据,这对于数据库开发者尤其是那些需要处理XML数据的人员来说,是一项非常实用的技能。记得仔细研究“说明.txt”文件,动手实践,以巩固理论知识...
在实际脚本中,可能还会包括错误处理、日志记录等附加功能,以确保脚本的稳定性和可维护性。此外,如果xml文件数量较多,可能还会涉及到文件操作,如遍历目录、读取多个文件等。 至于“xml”文件,这应该是用于测试...
转换工具或脚本通常会提供批量转换功能,一次性处理整个XML文件中的所有联系人。这在用户迁移大量联系人时非常有用,避免了手动导入导出的繁琐工作。 总的来说,从小米XML文件转VCard涉及到的技术点包括XML解析、...
这个库是由C语言编写的,因此适用于那些需要在嵌入式系统或资源有限的环境中处理XML数据的项目。Minixml的设计目标是简单、高效且易于集成到现有项目中。 XML(eXtensible Markup Language)是一种用于标记数据的...
9. **日志记录**:脚本运行过程中的错误信息和关键步骤可以通过日志记录下来,方便后续分析和调试。Python的`logging`库提供了这方面的能力。 10. **安全与道德问题**:使用抢号脚本需注意遵守华西医院的挂号规定,...
当我们需要在ASP.NET应用中处理XML数据时,通常会将XML文件转换为DataSet对象,以便更方便地进行数据操作。以下将详细介绍如何使用C#脚本来实现这一过程。 首先,要完成XML文件到DataSet的转换,我们需要使用`...
为了导出这些数据为XML格式,我们需要一个工具或脚本,这个工具可能就是压缩包中的"XMLmaker"程序。这个程序可能实现了将查询结果转换为XML的逻辑,包括定义XML根元素、子元素以及元素属性,确保数据的结构化。 ...
而是利用XML(Extensible Markup Language)作为数据存储格式,结合XSLT(eXtensible Stylesheet Language Transformations)进行数据展示和处理,再辅以ASP(Active Server Pages)脚本技术和JavaScript增强交互性...
luaxml是为OpenResty设计的一个Nginx模块,它允许在Nginx服务器上处理XML数据,通过Lua脚本进行解析、生成和操作。这个插件是Nginx和Lua集成的一个强大工具,特别适合于构建动态Web服务和API接口,尤其是那些需要...