+ -
当前位置:首页 → 问答吧 → 紧急~~请各位大侠帮忙如何用awk读取部分报文

紧急~~请各位大侠帮忙如何用awk读取部分报文

时间:2010-12-19

来源:互联网

如题
已知某日志文件中有好多如下报文结构体,每个报文结构都有唯一标识TransIDO :TransIDO20101217140042600470。
请各位大虾帮忙 用awk方法通过唯一标识TransIDO 将报文从<InterBOSS>......</InterBOSS>的内容输出!
我现在只能实现下面红色部分的输出,上边的蓝色部分不知道用awk如何输出!

<?xml version="1.0"?>
<InterBOSS>
<OrigDomain>UPMS</OrigDomain>
<HomeDomain>BOSS</HomeDomain>
<BIPCode>BIP2B284</BIPCode>
<BIPVer>0100</BIPVer>
<ActivityCode>T2001044</ActivityCode>
<ActionCode>0</ActionCode>
<Routing>
<RouteType>01</RouteType>
<RouteValue>13813960982</RouteValue>
</Routing>
<ProcID>UPMSPID20101217140042600470</ProcID>
  <TransIDO>TransIDO20101217140042600470</TransIDO>
<TransIDH></TransIDH>
<ProcessTime>20101217140043</ProcessTime>
<SPReserve>
<TransIDC>0000UPMSTransIDO20101217140042600470</TransIDC>
<CutOffDay>20101217</CutOffDay>
<OSNDUNS>0000</OSNDUNS>
<HSNDUNS>2500</HSNDUNS>
<ConvID>005600005566TransIDO2010121714004260047020101217140028560</ConvID>
</SPReserve>
<TestFlag>0</TestFlag>
<MsgSender>2500</MsgSender>
<MsgReceiver>2501</MsgReceiver>
<SvcContVer>0100</SvcContVer>
<SvcCont><![CDATA[<?xml version="1.0" encoding="UTF-8"?><OrderReq><Amount>1</Amount><OrderList><OrderID>20101217125930280231</OrderID><MobNum>13813960982</MobNum><Province>250</Province><OrdOprTime>20101217125941</OrdOprTime><SubOrd><ItemList><SubOrderID>20101217125939668467</SubOrderID><ItemName>50Ԫ»°·Җ±³⺯ItemName><ItemID>346032</ItemID><Reserve></Reserve><Status>002</Status><StatusUpdateTime>20101217125939</StatusUpdateTime></ItemList></SubOrd></OrderList></OrderReq>]]></SvcCont>
</InterBOSS>



作者: ruyanvxiaoman   发布时间: 2010-12-19

红色部分我自己的写法是
cat T2001044-TransIDO20101217140042600470.xml | awk 'BEGIN{while(getline){if(/TransIDO20101217140042600470/) for(i=0;i<=NR;i++){ print $0; if(/InterBOSS/) break; getline;}}}' 
请各位大侠给出蓝色部分输出的方法

作者: ruyanvxiaoman   发布时间: 2010-12-19

awk不熟,试下这个:
Assembly code
awk '/TransIDO20101217140042600470/{print "<InterBOSS>"$0}' RS="<InterBOSS>" T2001044-TransIDO20101217140042600470.xml


另外为什么非要awk?

作者: iambic   发布时间: 2010-12-19