В основном необходимо удалить сторонние объекты (и все между ними) из набора отдельных XML-файлов с именем number.xml. Я попытался следующие, но это не совсем производить все, что нужно:Сценарий в Unix для удаления XML-тегов и содержимого из файла
cat test.xml | sed "s;<parties>;\do_opentag ;" | sed "s;</parties>;\do_closetag ;" | awk 'BEGIN { doPrint = 1; } /do_opentag/ { doPrint = 0; print $0; } /do_closetag/ { doPrint = 1; } { if (doPrint) print $0; }' | grep -v 'do_opentag\|do_closetag'
<?xml version="1.0" encoding="UTF-8"?>
<patent-document xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" pid="58326519" doc-generation-date="2016-10-11">
<bibliographic-data>
<application-reference>
<pan>46422</pan>
</application-reference>
<publication-reference>
<publication-office>KR</publication-office>
<patent-publication-date>
<year>2016</year>
<month>10</month>
<day>11</day>
</patent-publication-date>
</publication-reference>
<parties>
<applicants>
<applicant sequence="1">
<name lang="EN"></name>
<address>
<location-of-work>KR</location-of-work>M
</address>
</applicant>
</applicants>
</parties>
</bibliographic-data>
<vendor>Any</vendor>
<document-translation-date>2016-11-24</document-translation-date>M
<invention-title lang="EN">Cell preservation container for liquid-based cell inspection</invention-title>
<abstract lang="EN">The present invention relates to a liquid for discharging liquid containing cells and cell may be a sampling which is simply eminent generated in </abstract>
<comment lang="EN"></comment>
</patent-document>
Спасибо. Почти готово. По какой-то причине я получаю сообщение о том, что «отсутствует новая строка в конце файла test.xml», и тег закрытия patent-document> становится недоступным. Любой способ исправить это? – Cinda
Поскольку последняя строка не содержит завершающего символа новой строки, sed никогда не обрабатывает ее. Я никогда не видел эту проблему, но [второй ответ здесь] (http://unix.stackexchange.com/questions/31947/how-to-add-a-newline-to-the-end-of-a- файл) представляется разумным: 'echo >> test.xml; sed -e '/ /,/<\/parties>/d' test.xml' –
stevesliva