我在TREC format中有7GB XML文檔。該文件有標籤DOC
,其中有DOCNO
和TEXT
。根據ID列表篩選XML文檔
<FILE>
<DOC>
<DOCNO>abc</DOCNO>
<TEXT>content
of first
doc</TEXT>
</DOC>
<DOC>
<DOCNO>def</DOCNO>
<TEXT>content
of second
doc</TEXT>
</DOC>
<DOC>
<DOCNO>ghi</DOCNO>
<TEXT>content
of third
doc</TEXT>
</DOC>
</FILE>
我想這個文件過濾和保持只DOC
有S IN一個文件一個DOCNO
包含ID列表:
abc
ghi
所以輸出變成
<FILE>
<DOC>
<DOCNO>abc</DOCNO>
<TEXT>content
of first
doc</TEXT>
</DOC>
<DOC>
<DOCNO>ghi</DOCNO>
<TEXT>content of
third
doc</TEXT>
</DOC>
</FILE>
我的猜測是xml_grep
應該是有用的,但我做不到。
你可以嘗試使用'XMLStarlet'來獲取'DOC'元素,'awk'來檢查和pri nt只有'DOCNO'等於'abc,ghi'的元素。你有沒有嘗試過,或者你需要它在bash? – tftd
謝謝@ tftd。我只想強調,ID列表在一個文件中。有400萬人。 – mossaab
我不確定我是否遵循,你想獲得'DOCNO'內容並將它存儲到一個文件中,或者你想獲得所有'DOC'元素,其中'DOCNO'包含某個字符串?關於你的文件的長度 - 這是很多數據。根據系統的不同,解析和存儲所有內容可能需要一段時間。 – tftd