2010-08-06 31 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/ 

获取除最后/文本标签之外的所有内容扑倒在地:-)有趣的东西!

相关问题