2010-08-06 28 views
4

我有一個這樣的XML文件的話:如何刪除一個文件中的文本只是我需要使用VIM

<text> 
<A>12</A> 
<B>13</B> 
</text> 

<text> 
<A>14</A> 
<B>15</B> 
</text> 

現在我想刪除該文件中的所有文本,除了在標籤A的話 也就是說,該文件應包含以下內容:

12 
14 

我怎樣才能做到這一點?

回答

0
:%s/^.\{-}\(<A>\(.*\)<\/A>\)\?.*$/\2/g 

這假設你有和我一樣的魔法模式;當然它不會刪除空行。

2

你可以做到這一點在兩個命令(在一行中,如果你喜歡)

:g!/.*<A>[^<]*<\/A>.*/d 
:%s/<A>\([^<]*\)<\/A>/\1/g 

一行:(用豎線|獨立的命令)

:g!/.*<A>[^<]*<\/A>.*/d | :%s/<A>\([^<]*\)<\/A>/\1/g 

這將刪除空白行...

0
:%s/\_.\{-}<A>\([^<]*\)<\/A>\_.\{-}>$/\1\r/ 

獲取除最後/文本標籤之外的所有內容撲倒在地:-)有趣的東西!

相關問題