我一直在研究將包含多個XML文件的文件拆分爲單獨的XML文件的代碼段。每個XML文件的行數都不相同,所以我一直使用XML頭標記來知道下一個文件的起始位置。Unix - 將包含XML文件的文件拆分爲單個文件
grep -n $string $xmlfile | sed -n 's/^\([0-9]*\)[:].*/\1p'
這是我得到的每個文件的開始行號。我怎樣才能使用head/tail命令來利用行號在一個自動腳本中分開文件?
我一直在研究將包含多個XML文件的文件拆分爲單獨的XML文件的代碼段。每個XML文件的行數都不相同,所以我一直使用XML頭標記來知道下一個文件的起始位置。Unix - 將包含XML文件的文件拆分爲單個文件
grep -n $string $xmlfile | sed -n 's/^\([0-9]*\)[:].*/\1p'
這是我得到的每個文件的開始行號。我怎樣才能使用head/tail命令來利用行號在一個自動腳本中分開文件?
// x1, x2 being XML declaration line numbers
cat myfile | head -n x2 | tail -n x1
當您在首選shell
中解析xml
文件時,最好的辦法是使用xmllint
命令行和Xpath
表達式。
xmllint
來自libxml
。
見http://www.xmlsoft.org/ & http://en.wikipedia.org/wiki/Xpath
遺憾的是沒有被安裝在機器上,我沒有安裝的權利。當我到達另一臺機器時,需要查看libxml和Xpath。 – Rellix
不太確定如何將可變數量的行聲明放入x1/x2等。任何想法? – Rellix
循環行號'm1,m2,...,mn'的列表。讓'x1 = 0'和'x2 = n1'。對於每個後續的迭代,分配'x1 = mi-1'和'x2 = mi'(1,2,i,n應該被數學地解釋爲索引)。 – aefxx