2012-10-12 64 views
3

我一直在研究將包含多個XML文件的文件拆分爲單獨的XML文件的代碼段。每個XML文件的行數都不相同,所以我一直使用XML頭標記來知道下一個文件的起始位置。Unix - 將包含XML文件的文件拆分爲單個文件

grep -n $string $xmlfile | sed -n 's/^\([0-9]*\)[:].*/\1p' 

這是我得到的每個文件的開始行號。我怎樣才能使用head/tail命令來利用行號在一個自動腳本中分開文件?

回答

1
// x1, x2 being XML declaration line numbers 
cat myfile | head -n x2 | tail -n x1 
+0

不太確定如何將可變數量的行聲明放入x1/x2等。任何想法? – Rellix

+0

循環行號'm1,m2,...,mn'的列表。讓'x1 = 0'和'x2 = n1'。對於每個後續的迭代,分配'x1 = mi-1'和'x2 = mi'(1,2,i,n應該被數學地解釋爲索引)。 – aefxx

0

當您在首選shell中解析xml文件時,最好的辦法是使用xmllint命令行和Xpath表達式。


xmllint來自libxml

http://www.xmlsoft.org/ & http://en.wikipedia.org/wiki/Xpath

+0

遺憾的是沒有被安裝在機器上,我沒有安裝的權利。當我到達另一臺機器時,需要查看libxml和Xpath。 – Rellix