HI All,
I have an xml file(test.xml) with the content as given below.Its a huge file,i have only given a part of it)
<row>
<id>
<name>abc</name>
<group>server</group>
<install>Y</install>
<boot>N</boot>
<></>
</id>
<source_name>12</source_name>
<data>123<data>
<datatype>I</datatype>
</row>
<row>
<id>
<name>abc</name>
<group>server</group>
<install>Y</install>
<boot>N</boot>
<></>
</id>
<source_name>13</source_name>
<data>123<data>
<datatype>I</datatype>
</row>
<row>
<id>
<name>abc</name>
<group>server</group>
<install>Y</install>
<boot>N</boot>
<></>
</id>
<source_name>14</source_name>
<data>123<data>
<datatype>I</datatype>
</row>
<row>
<id>
<name>abc</name>
<group>server</group>
<install>Y</install>
<boot>N</boot>
<></>
</id>
<source_name>19</source_name>
<data>123<data>
<datatype>I</datatype>
</row>
<row>
<id>
<name>abc</name>
<group>server</group>
<install>Y</install>
<boot>N</boot>
<></>
</id>
<source_name>12</source_name>
<data>123<data>
<datatype>I</datatype>
</row>
<row>
<id>
<name>abc</name>
<group>server</group>
<install>Y</install>
<boot>N</boot>
<></>
</id>
<source_name>13</source_name>
<data>123<data>
<datatype>I</datatype>
</row>
<row>
<id>
<name>abc</name>
<group>server</group>
<install>Y</install>
<boot>N</boot>
<></>
</id>
<source_name>14</source_name>
<data>123<data>
<datatype>I</datatype>
</row>
<row>
<id>
<name>abc</name>
<group>server</group>
<install>Y</install>
<boot>N</boot>
<></>
</id>
<source_name>19</source_name>
<data>123<data>
<datatype>I</datatype>
</row>
...............
................
...............
I want to print only the blocks(<row>.. </row>) where the <source_name>19</source_name> is present.(I want only the data corresponding to source 19).I am trying with the below code.
grep -B8 -A3 "<source_name>19</source_name>" test.xml > test_new.xml
i have the output ,but is there any other efficient way to perform this?.Kindly suggest