0

I have this log file below, and I would like to extract the XML in the middle of it by using a field as input search <ns12:equipmentId>089471386301077634</ns12:equipmentId>, so the script should do a search in the log file by 089471386301077634 and return me the entire XML as <ns1:queryDeviceInfoBtRequest... till </ns1:queryDeviceInfoBtRequest>, any Idea how it could be done?

...
..
.
2016/11/09 07:29:18
Request:
mqMessage:
MQMD:[queue=EKS01A2T/EKS.QUERYDEVICEINFO,applicationOriginData=    ,format=MQSTR   ,backoutCount=0,characterSet=1208,correlationId=000000000000000000000000000000000000000000000000,encoding=273,expiry=500,messageId=414D51204450303141325420202020205788160022E00ACA,persistence=0,putApplicationName=WebSphere Datapower MQClient,putDateTime=2016-10-9T12:29:18.490-GMT,replyToQueueManagerName=DP01A2T                                         ,replyToQueueName=76S.REPLY16                                     ,userId=null]
Data:[<?xml version="1.0" encoding="UTF-8"?>

<ns1:queryDeviceInfoBtRequest xmlns:ns1="http://integration.sprint.com/integration/interfaces/queryDeviceInfoBtV1/v1/queryDeviceInfoBtV1">
<ns3:mqMessageHeader xmlns:ns3="http://integration.sprint.com/public/interfaces/MQMessageHeaderV2.xsd">
<ns3:messageHeaderVersion>2</ns3:messageHeaderVersion>
<ns3:serviceName>queryDeviceInfoBt</ns3:serviceName>
<ns3:serviceQualifier>76S</ns3:serviceQualifier>
<ns3:serviceVersion>1</ns3:serviceVersion>
<ns3:dialogTypeCode>2</ns3:dialogTypeCode>
<ns3:dialogSubTypeCode>1</ns3:dialogSubTypeCode>
<ns3:parentDialogReference>7V2-CONVID-aab02e21</ns3:parentDialogReference>
<ns3:dialogReference>7V2-MSGID-SP-aab02e21</ns3:dialogReference>
<ns3:applicationReference>7V2</ns3:applicationReference>
<ns3:applicationGroup>7V2</ns3:applicationGroup>
<ns3:componentGroup>Equipment</ns3:componentGroup>
<ns3:componentName>queryDeviceInfoBt</ns3:componentName>
<ns3:reqSentDateTime>2016-11-09T07:29:18.003-05:00</ns3:reqSentDateTime>
<ns3:applicationUserId>7V2</ns3:applicationUserId></ns3:mqMessageHeader>
<data xmlns="http://integration.sprint.com/integration/interfaces/queryDeviceInfoBtV1/v1/queryDeviceInfoBtV1">
<ns12:queryDeviceInfo xmlns="http://integration.sprint.com/interfaces/validateDevice/v8/validateDeviceV8.xsd" xmlns:ns2="http://integration.sprint.com/common/header/WSMessageHeader/v2" xmlns:ns3="http://integration.sprint.com/common/ErrorDetailsV2.xsd" xmlns:ns4="http://integration.sprint.com/interfaces/queryDeviceResourceInfo/v1/queryDeviceResourceInfo.xsd" xmlns:ns5="http://integration.sprint.com/interfaces/queryCdmaDeviceInfo/v2/queryCdmaDeviceInfoV2.xsd" xmlns:ns6="http://integration.sprint.com/interfaces/queryAccountDeviceList/v1/queryAccountDeviceList.xsd" xmlns:ns7="http://integration.sprint.com/interfaces/queryDeviceCapabilities/v2/queryDeviceCapabilitiesV2.xsd" xmlns:ns8="http://integration.sprint.com/interfaces/validateGiveBackDevice/v1/validateGiveBackDevice.xsd" xmlns:ns9="http://integration.sprint.com/interfaces/queryDeviceResourceInfo/v2/queryDeviceResourceInfoV2.xsd" xmlns:ns10="http://integration.sprint.com/interfaces/validateDevice/v7/validateDeviceV7.xsd" xmlns:ns11="http://integration.sprint.com/interfaces/queryDeviceList/v1/queryDeviceList.xsd" xmlns:ns13="http://integration.sprint.com/interfaces/queryDeviceHistoryByResource/v1/queryDeviceHistoryByResource.xsd" xmlns:ns14="http://integration.sprint.com/interfaces/querySubscriberDeviceList/v1/querySubscriberDeviceList.xsd" xmlns:ns15="http://integration.sprint.com/interfaces/queryDeviceCatalogInfo/v1/queryDeviceCatalogInfo.xsd" xmlns:ns16="http://integration.sprint.com/interfaces/validateDevice/v6/validateDeviceV6.xsd" xmlns:ns17="http://integration.sprint.com/interfaces/queryDeviceOrderHistory/v1/queryDeviceOrderHistory.xsd" xmlns:ns18="http://integration.sprint.com/interfaces/validateBuybackDevice/v1/validateBuybackDevice.xsd" xmlns:ns19="http://integration.sprint.com/interfaces/validateDevice/v9/validateDeviceV9.xsd" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns12="http://integration.sprint.com/interfaces/queryDeviceInfo/v1/queryDeviceInfo.xsd">
<ns12:info>
<ns12:equipmentId>089471386301077634</ns12:equipmentId>
<ns12:checkPreviouslyActivated>true</ns12:checkPreviouslyActivated>
<ns12:brandCode>BST</ns12:brandCode></ns12:info></ns12:queryDeviceInfo></data></ns1:queryDeviceInfoBtRequest>]


2016/11/09 07:29:18
OutputQMgr/OutputQueue:[null/EKS.VALDVC]
MQPutMessage:
MQMD:[applicationOriginData=    ,backoutCount=0,characterSet=819,correlationId=000000000000000000000000000000000000000000000000,encoding=273,expiry=500,messageId=414D5120454B53303141325420202020C54617580FB08F20,persistence=2,putApplicationName=java                        ,putDateTime=2016-10-9T12:29:18.510-GMT,replyToQueueManagerName=                                                ,replyToQueueName=EKS.REPLY03                                     ,userId=eaiowner    ]
Data:[1VALDVCBT            3  10 00000_EKS                                                                                       EKS     eksSystem       00000000                             089471386301077634                                       BST]


2016/11/09 07:29:18
MQGetMessage:
MQMD:[applicationOriginData=    ,backoutCount=0,characterSet=819,correlationId=414D5120454B53303141325420202020C54617580FB08F20,encoding=273,expiry=500,messageId=414D5120454B53303141325420202020C54617580FB08F20,persistence=0,putApplicationName=java                        ,putDateTime=2016-10-9T12:29:18.520-GMT,replyToQueueManagerName=EKS01A2T                                        ,replyToQueueName=EKS.REPLY03                                     ,userId=eaiowner    ]
Data:[4VALDVCBT_R          3  10 00000                                                                                           EKS     eksSystem      00000000010 Device is valid and cleared for use                                             APPLE, INC                    IPH 6 GRAY 16 BST BOX SGL     CG885909950249        35544007107182U0    SUCCESS                                                                                                                                                CO                                                      I          ]


2016/11/09 07:29:18
 Select  rtrim(id.item_id), trim(id.serial_type), trim(id.item_ldesc),  trim(id.item_sdesc), trim(id.item_ldesc), trim(id.manf_cd),  trim(id.network_ind), trim(id.used_eqp), trim(sii.pool),  trim(sii.location_id), trim(sii.activity_code), to_char(sii.activity_date, 'mmddyyyy'),  trim(sii.item_ownership),rtrim(sii.curr_possession), trim(sii.missing_ind),  trim(sii.in_repair_ind), trim(sii.in_transit_ind), trim(sii.comited_to_pos_ind),  trim(sii.software_ver),rtrim(sii.SERIAL_NUMBER),trim(item_id_type)  FROM serial_item_inv sii, item_definition id  WHERE sii.serial_number= ? AND  sii.item_id = id.item_id
{[0]089471386301077634}
jdbc:eaidb:dbpool
[ com.sprint.eai.queryDeviceinfo.dao.QueryDeviceInfoDao : getEquipmentDetails ]
Elapsed time (ms) =1

2016/11/09 07:29:18
 select TRIM(manf_cd), TRIM(item_ldesc), TRIM(item_id_type) from item_definition where item_id = rpad(:mdlNbr,15) AND ROWNUM < 2
{[0]885909950249}
jdbc:eaidb:dbpool
[ com.sprint.eai.queryDeviceinfo.dao.QueryDeviceInfoDao : getManufacturerInfo ]
Elapsed time (ms) =1

2016/11/09 07:29:18
 SELECT ea.ATTR_CODE  FROM EQUIPMENT_ATTR ea, ITEM_DEFINITION id  WHERE id.ITEM_ID = ea.ITEM_ID  AND id.ITEM_ID = rpad(?,15)
{[0]885909950249}
jdbc:eaidb:dbpool
[ com.sprint.eai.queryDeviceinfo.dao.QueryDeviceInfoDao : getDeviceDetailInfo ]
Elapsed time (ms) =1

2016/11/09 07:29:18
 select case when  count(*) > 0 THEN 'true'  else 'false' end  from EQP_RULE_LINK where item_id = RPAD(:item_id, 15) and group_id in('MF','MT','MC','MB','M4')
{[0]885909950249}
jdbc:eaidb:dbpool
[ com.sprint.eai.queryDeviceinfo.dao.QueryDeviceInfoDao : getDeviceDetailInfo ]
Elapsed time (ms) =0

2016/11/09 07:29:18
 SELECT DISC_AMT from EQUIP_AGR_GEN_ATTR WHERE ATTR_CODE= 'DISCELG'
{}
jdbc:eaidb:dbpool
[ com.sprint.eai.queryDeviceinfo.dao.QueryDeviceInfoDao : getDeviceDetailInfo ]
Elapsed time (ms) =1

2016/11/09 07:29:18
 select TRIM(MODEL_NME) from device_info where wrls_dev_sku_nbr = TRIM(:item_id)
{[0]885909950249}
jdbc:eaidb:dbpool
[ com.sprint.eai.queryDeviceinfo.dao.QueryDeviceInfoDao : getMarketingName ]
Elapsed time (ms) =1

2016/11/09 07:29:18
 SELECT  decode(sa.cross_fleet_ind, 'Y', 'true', 'N','false', 'false')  , decode(sa.dc_ind, 'Y', 'true', 'N','false', 'false')  , decode(sa.cell_ind, 'Y', 'true', 'N','false', 'false')  , decode(sa.pds_ind, 'Y', 'true', 'N','false', 'false')  , decode(sa.mms_ind, 'Y', 'true', 'N','false', 'false')  , decode(sa.sdgc_ind, 'Y', 'true', 'N','false', 'false')  , decode(sa.gprs_ind, 'Y', 'true', 'N','false', 'false')  , decode(sa.ext800_ind, 'Y', 'true', 'N','false', 'false')  , decode(sa.ptt_ind, 'Y', 'true', 'N','false', 'false')  FROM software_attr sa  WHERE sa.item_id=rpad(:itemId, 15)  AND (:phoneSoftware is null or sa.software_ver = :phoneSoftware)
{[0]885909950249,[1]null,[2]null}
jdbc:eaidb:dbpool
[ com.sprint.eai.queryDeviceinfo.dao.QueryDeviceInfoDao : getPhoneSoftwareInfo ]
Elapsed time (ms) =0

2016/11/09 07:29:18
 SELECT ea.ATTR_CODE  FROM EQUIPMENT_ATTR ea, ITEM_DEFINITION id  WHERE id.ITEM_ID = ea.ITEM_ID  AND id.ITEM_ID = rpad(?,15)
{[0]885909950249}
jdbc:eaidb:dbpool
[ com.sprint.eai.queryDeviceinfo.dao.QueryDeviceInfoDao : getEquipAttrCode ]
Elapsed time (ms) =1

2016/11/09 07:29:18
OutputQMgr/OutputQueue:[null/EKS.REQDVCHIST]
MQPutMessage:
MQMD:[applicationOriginData=    ,backoutCount=0,characterSet=819,correlationId=000000000000000000000000000000000000000000000000,encoding=273,expiry=500,messageId=414D5120454B53303141325420202020C546175810B08F20,persistence=2,putApplicationName=java                        ,putDateTime=2016-10-9T12:29:18.540-GMT,replyToQueueManagerName=                                                ,replyToQueueName=EKS.REPLY03                                     ,userId=eaiowner    ]
Data:[1REQDVCHISTBT        3  2  00000_EKS                                                                                       EKS     eksSystem       00000000                             089471386301077634E1         ]


2016/11/09 07:29:18
MQGetMessage:
MQMD:[applicationOriginData=    ,backoutCount=0,characterSet=819,correlationId=414D5120454B53303141325420202020C546175810B08F20,encoding=273,expiry=500,messageId=414D5120454B53303141325420202020C546175855AB8F20,persistence=0,putApplicationName=java                        ,putDateTime=2016-10-9T12:29:18.560-GMT,replyToQueueManagerName=EKS01A2T                                        ,replyToQueueName=EKS.REPLY03                                     ,userId=eaiowner    ]
Data:[4REQDVCHISTBT_R      3  2  00000                                                                                           EKS     eksSystem      200000001NMS                 REQDVCHISTBT        REQDVCHISTBT                                           nms_exception                                     00000115Server.704:NMS returned status_code=38, status_text=DOES_NOT_EXIST_IN_DB: No records found in SubscriberLinkHistory]


2016/11/09 07:29:18
Response:
mqMessage:
MQMD:[applicationOriginData=    ,format=MQSTR   ,backoutCount=0,characterSet=1208,correlationId=414D51204450303141325420202020205788160022E00ACA,encoding=273,expiry=500,messageId=,persistence=0,putApplicationName=WebSphere Datapower MQClient,putDateTime=null,replyToQueueManagerName=DP01A2T                                         ,replyToQueueName=76S.REPLY16                                     ,userId=null]
Data:[<?xml version="1.0" encoding="UTF-8"?>
<quer:queryDeviceInfoBtResponse xmlns:quer="http://integration.sprint.com/integration/interfaces/queryDeviceInfoBtV1/v1/queryDeviceInfoBtV1" xmlns:quer1="http://integration.sprint.com/interfaces/queryDeviceInfo/v1/queryDeviceInfo.xsd">
  <ns3:mqMessageHeader xmlns:ns3="http://integration.sprint.com/public/interfaces/MQMessageHeaderV2.xsd">
    <ns3:messageHeaderVersion>2</ns3:messageHeaderVersion>
    <ns3:serviceName>queryDeviceInfoBt</ns3:serviceName>
    <ns3:serviceQualifier>76S</ns3:serviceQualifier>
    <ns3:serviceVersion>1</ns3:serviceVersion>
    <ns3:dialogTypeCode>2</ns3:dialogTypeCode>
    <ns3:dialogSubTypeCode>4</ns3:dialogSubTypeCode>
    <ns3:parentDialogReference>7V2-CONVID-aab02e21</ns3:parentDialogReference>
    <ns3:dialogReference>7V2-MSGID-SP-aab02e21</ns3:dialogReference>
    <ns3:applicationReference>7V2</ns3:applicationReference>
    <ns3:applicationGroup>7V2</ns3:applicationGroup>
    <ns3:componentGroup>Equipment</ns3:componentGroup>
    <ns3:componentName>queryDeviceInfoBt</ns3:componentName>
    <ns3:reqSentDateTime>2016-11-09T07:29:18.003-05:00</ns3:reqSentDateTime>
    <ns3:applicationUserId>7V2</ns3:applicationUserId>
    <ns3:replyCompletionCode>0</ns3:replyCompletionCode>
  </ns3:mqMessageHeader>
  <quer:data>
    <quer1:queryDeviceInfoResponse>
      <quer1:equipmentInfo>
        <quer1:equipmentId>089471386301077634</quer1:equipmentId>
        <quer1:itemId>885909950249</quer1:itemId>
        <quer1:serialType>E</quer1:serialType>
        <quer1:esn>089471386301077634</quer1:esn>
        <quer1:esnHex>35544007107182</quer1:esnHex>
        <quer1:description>IPH 6 GRAY 16 BST BOX SGL</quer1:description>
        <quer1:manufacturer>436</quer1:manufacturer>
        <quer1:modelNumber>885909950249</quer1:modelNumber>
        <quer1:phoneModel>IPH 6 GRAY 16 BST BOX SGL</quer1:phoneModel>
        <quer1:possession>A</quer1:possession>
        <quer1:negativeInd>false</quer1:negativeInd>
        <quer1:cellInd>true</quer1:cellInd>
        <quer1:pdsInd>true</quer1:pdsInd>
        <quer1:pttInd>false</quer1:pttInd>
        <quer1:networkInd>C</quer1:networkInd>
        <quer1:pamInd>true</quer1:pamInd>
        <quer1:hppttInd>false</quer1:hppttInd>
        <quer1:evdoInd>true</quer1:evdoInd>
        <quer1:abGlmsInd>false</quer1:abGlmsInd>
        <quer1:previouslyActivated>N</quer1:previouslyActivated>
        <quer1:equipmentStatus>D</quer1:equipmentStatus>
        <quer1:inputSerialType>E</quer1:inputSerialType>
        <quer1:wiMaxInd>false</quer1:wiMaxInd>
        <quer1:lteInd>true</quer1:lteInd>
        <quer1:lteUiccType>U</quer1:lteUiccType>
        <quer1:iccId/>
        <quer1:uiccStatus/>
        <quer1:isBroadband2GoInd>false</quer1:isBroadband2GoInd>
        <quer1:isBlackberryDeviceInd>false</quer1:isBlackberryDeviceInd>
        <quer1:isDeviceInsuranceEligibleInd>Y</quer1:isDeviceInsuranceEligibleInd>
        <quer1:isAppleInsuranceApplicableInd>N</quer1:isAppleInsuranceApplicableInd>
        <quer1:isDeviceMRCDiscountEligibleInd>true</quer1:isDeviceMRCDiscountEligibleInd>
        <quer1:mrcDiscountAmount>5</quer1:mrcDiscountAmount>
        <quer1:marketingName>Boost iPhone 6 16GB</quer1:marketingName>
      </quer1:equipmentInfo>
    </quer1:queryDeviceInfoResponse>
  </quer:data>
</quer:queryDeviceInfoBtResponse>]
.
..
...
0
sed -rn '
/<ns1:queryDeviceInfoBtRequest/!b
h
:X
n
/<\/ns1:queryDeviceInfoBtRequest>/ {
    H;g
    />089471386301077634</p
    b
}
H
bX
' xmlfile
0

Yeah, it's actually pretty easy. Your XML appears to start from Data:[ and end at ]\n\n

The only gotcha is if there's a bracket in the XML, it'll get a bit awkward.

Anyway:

#!/usr/bin/env perl
use strict;
use warnings;
use XML::Twig;

#hardcoded. But could read this from the command line with 
#e.g. shift @ARGV
#this will 'take' the first argument, but leave any others (e.g. filenames to read)
my $search_id = '089471386301077634'; 

#set record separator
local $/ = ">]\n";

#iterate the 'magic' filehandle.
# <> is either STDIN or files specified as args, just like "grep"
while ( <> ) {

   #match Data followed by XML header. Multi-line 
   my ( $xml ) = m/Data:\[(\<\?xml[^]]+)/gms;
   #if no match (e.g. not XML ) then skip
   next unless $xml;
   #parse it - pick up any errors (XML parse errors should be fatal
   #hence the eval
   my $twig = eval { XML::Twig -> parse ( $xml ); };
   if ($@) {warn "XML blob couldn't be parsed $@\n"};

   #set output formatting. (optional)
   $twig -> set_pretty_print('indented_a');
   #print it to STDOUT. 
   #but test if the 'equipment ID' is as required first:
   if ( $twig -> findnodes("//ns12:equipmentId[string()=\"$search_id\"]") ) {
       print "Found: \n"; 
       $twig -> findnodes("//ns12:equipmentId[string()=\"$search_id\"]",0) -> print;
       print "\nFull XML:\n";
       $twig -> set_pretty_print('indented_a');
       $twig -> print;
   }
}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.