2014-02-12 3 views
1

У меня есть этот XML-файл:csplit - что я делаю неправильно?

<docs> 
<doc> 
Some text 
</doc> 
<doc> 
here some 
</doc> 
<doc> 
text here 
</doc> 
</docs> 

Я пытаюсь использовать csplit для того, чтобы получить только части текста. Это то, что я придумал.

$ csplit docs.xml '%^<docs>%1' '/^<\/doc/1' '{*}' 

ответ

1

если файловая структура, как тот, который вы включены вы можете извлечь содержимое, делая grep -v "^<" x или более conveniant подход cat x|sed -e 's/<[^>]*>//g'|grep -v '^$' или сделать это путь csplit на основе комментариев ниже вы можете это сделать Лик этого

cat doc.xml | egrep -v '<?xml version="1.0" \?>|<docs>|</docs>' | csplit -q -z - '/<doc/' '{*}' --prefix=out- 
+0

Это работает, но csplit создает разные файлы с содержимым между тегами , не так ли? Кошка просто печатает его на терминале. Любой способ получить эту функциональность для вашего подхода? – imre

+0

вы можете перенаправить весь вывод в файл, подобный этому cat x | sed -e 's/<[^>] *> // g' | grep -v '^ $'> output.txt –

+0

Точка зрения состоит в том, текстовые файлы (документы), каждый из которых содержит контент между тегами. Поэтому первый из них будет содержать «Некоторый текст», второй - «здесь какой-то», а третий - «текст здесь». Это возможно? – imre