- 论坛徽章:
- 0
|
本帖最后由 某某7呀 于 2019-03-07 16:39 编辑
xml文件a.xml,但是格式不规范,<managedObject></managedObject> <managedObject .../> 两种格式 有的里面没有子元素
1、如何同时模糊匹配到<managedObject .../>
求教诸位大神,以下是实现<managedObject></managedObject> 段落的分割,如何同时分割<managedObject .../>
cat a.xml |awk 'BEGIN{key=1} /<managedObject/,/<\managedObject>/ {print $0>"key"key".txt"} /<\managedObject>/ {++key}'
a.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE raml SYSTEM 'raml20.dtd'>
<raml version="2.0" xmlns="raml20.xsd">
<cmData type="actual">
<header>
<log dateTime="2019-02-27T17:28:38" action="created" appInfo="ActualExporter">InternalValues are used</log>
</header>
<managedObject class="MRBTS" version="SBTS17A_1707_001" distName="PLMN-PLMN/MRBTS-804874" id="2048554">
<p name="name">WZWL20</p>
<p name="btsName">WZW0020</p>
</managedObject>
<managedObject class="MRBTS" version="SBTS17A_1707_001" distName="PLMN-PLMN/MRBTS-804875" id="2056406">
<p name="name">WZWL129</p>
<p name="btsName">WZW0129</p>
</managedObject>
<managedObject class="MRBTS" version="SBTS17A_1707_001" distName="PLMN-PLMN/MRBTS-804876" id="1910785">
<p name="name">WZWL147</p>
<p name="btsName">WZW0147</p>
</managedObject>
<managedObject class="MRBTS" version="SBTS17A_1707_001" distName="PLMN-PLMN/MRBTS-804877" id="2013739">
<p name="name">WZWL156</p>
<p name="btsName">WZW156</p>
</managedObject>
<managedObject class="MRBTS" version="SBTS17A_1707_001" distName="PLMN-PLMN/MRBTS-804878" id="1927471">
<p name="name">WZWL165</p>
<p name="btsName">WZW0165</p>
</managedObject>
<managedObject class="MRBTS" version="SBTS17A_1707_001" distName="PLMN-PLMN/MRBTS-805108" id="2013712">
<p name="name">WZWL293</p>
<p name="btsName">WZW293</p>
</managedObject>
<managedObject class="VLANIF" version="SBTS16.10" distName="PLMN-PLMN/SBTS-944649/TNL-1/ETHSVC-1/ETHIF-1/VLANIF-1" id="1018535">
<p name="vlanId">3002</p>
</managedObject>
<managedObject class="VLANIF" version="SBTS16.10" distName="PLMN-PLMN/SBTS-944649/TNL-1/ETHSVC-1/ETHIF-1/VLANIF-2" id="1018536">
<p name="vlanId">902</p>
</managedObject>
<managedObject class="VLANIF" version="SBTS16.10" distName="PLMN-PLMN/SBTS-944649/TNL-1/ETHSVC-1/ETHIF-1/VLANIF-3" id="1018537">
<p name="vlanId">2000</p>
</managedObject>
<managedObject class="EQM" version="EQM17A_1708_008" distName="PLMN-PLMN/MRBTS-804874/EQM-1" id="2093977"/>
<managedObject class="TNLSVC" version="TNL17A_1708_008" distName="PLMN-PLMN/MRBTS-804875/TNLSVC-1" id="2093000"/>
<managedObject class="EQM_R" version="EQMR17A_1708_008" distName="PLMN-PLMN/MRBTS-804876/EQM_R-1" id="2092995"/>
</cmData>
</raml>
这里想实现------将xml文件分割成若干小文件,以distname区分 这里要实现根据distname输出到不同文件 比如PLMN-PLMN/MRBTS-804874 以及 PLMN-PLMN/MRBTS-804874/EQM-1这样的输出到一个文件类似如下效果
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE raml SYSTEM 'raml20.dtd'>
<raml version="2.0" xmlns="raml20.xsd">
<cmData type="actual">
<header>
<log dateTime="2019-02-27T17:28:38" action="created" appInfo="ActualExporter">InternalValues are used</log>
</header>
<managedObject class="MRBTS" version="SBTS17A_1707_001" distName="PLMN-PLMN/MRBTS-804874" id="2048554">
<p name="name">WZWL20</p>
<p name="btsName">WZW0020</p>
</managedObject>
<managedObject class="EQM" version="EQM17A_1708_008" distName="PLMN-PLMN/MRBTS-804874/EQM-1" id="2093977"/>
</cmData>
</raml>
|
|