Мне нужно разделить файл XML с 4 узлами на 4 файла.Имея такой файл:
sddskjdsfds
asdadsa
20:15:12 st: <aRoot>
<aNode>v</aNode>
<otherNode a="2"/>
</aRoot>
kjfsdfj
20:15:59 r: <otherRoot>
<bNode>h</bNode>
</otherRoot>
sddskjdsfds
asdadsa
22:31:32 st: <aRoot>
<aNode>a</aNode>
<otherNode a="1"/>
</aRoot>
kjfsdfj
22:31:39 r: <otherRoot>
<bNode>o</bNode>
</otherRoot>
other-random-lines
Мне нужно разбить его на 4 файла: *aRoot_1.xml
, aRoot_2.xml
, otherRoot_1.xml
, otherRoot_2.xml
.
Пока что яВы достигли:
awk '/st:/,/<\/aRoot>/' file.txt > all_aRoots.txt
И аналогичный подход для <otherRoot>
: еще один вызов awk
, запись в all_otherRoots.txt
и т. д.
Но это сохраняет все символы до </aroot>
, и в результате все <aRoot>
находятся в outputfile
.
Как разделить файл журнала с 4-мя узлами xml на 4 файла, используя Bash? ОБНОВЛЕНИЕ # 1 : Обратите внимание, строки не-xml должны быть исключены, и, если возможно, из строк с XML, начинающихся с текста не-xml, должна сохраняться только часть XML
ОБНОВЛЕНИЕ № 2 : Пример выходного файла из ответа RavinderSingh13:
sddskjdsfds
asdadsa
20:15:12 st: <aRoot>
<aNode>v</aNode>
<otherNode a="2"/>