2014-02-12 175 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方式,你可以做到這一點LIK這

的一個
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

這樣做的要點是有多個文本文件(docs),每個文件都包含標籤之間的內容。所以第一個將包含「一些文本」,第二個「在這裏一些」和第三個「文本在這裏」。那可能嗎? – imre