我有一個這樣的XML文件的話:如何刪除一個文件中的文本只是我需要使用VIM
<text>
<A>12</A>
<B>13</B>
</text>
<text>
<A>14</A>
<B>15</B>
</text>
現在我想刪除該文件中的所有文本,除了在標籤A的話 也就是說,該文件應包含以下內容:
12
14
我怎樣才能做到這一點?
我有一個這樣的XML文件的話:如何刪除一個文件中的文本只是我需要使用VIM
<text>
<A>12</A>
<B>13</B>
</text>
<text>
<A>14</A>
<B>15</B>
</text>
現在我想刪除該文件中的所有文本,除了在標籤A的話 也就是說,該文件應包含以下內容:
12
14
我怎樣才能做到這一點?
:%s/^.\{-}\(<A>\(.*\)<\/A>\)\?.*$/\2/g
這假設你有和我一樣的魔法模式;當然它不會刪除空行。
你可以做到這一點在兩個命令(在一行中,如果你喜歡)
:g!/.*<A>[^<]*<\/A>.*/d
:%s/<A>\([^<]*\)<\/A>/\1/g
一行:(用豎線|
獨立的命令)
:g!/.*<A>[^<]*<\/A>.*/d | :%s/<A>\([^<]*\)<\/A>/\1/g
這將刪除空白行...
:%s/\_.\{-}<A>\([^<]*\)<\/A>\_.\{-}>$/\1\r/
獲取除最後/文本標籤之外的所有內容撲倒在地:-)有趣的東西!