我有一个XML文件,我只关心某个元素的size属性.我先用过
global!/<proto name="geninfo"/d
Run Code Online (Sandbox Code Playgroud)
删除我不关心的所有行.这留下了一大堆看起来像这样的行:
<proto name="geninfo" pos="0" showname="General information" size="174">
Run Code Online (Sandbox Code Playgroud)
我想删除除"size"之外的所有内容.我的计划是使用替换来摆脱不匹配'size ="[digit]"'的所有内容,删除字符串'size'和引号但我无法弄清楚如何替换字符串的否定.
知道如何做到这一点,或想出更好的方法来实现这一目标?基本上我想最终得到一个每行一个数字(大小)的文件.
您可以使用匹配的组:
:%s/^.*size="\([0-9]*\)".*$/\1/
Run Code Online (Sandbox Code Playgroud)
这将替换size="N"仅包含但N不触及其他行的行.
说明:这将查找包含一些随机字符的行,然后在链的某处size=",然后是数字",然后是一些更随机的字符,然后是行的结尾.现在我做的是我将数字包裹在(转义)括号中.这创造了一个群体.在search-and-replace命令的第二部分中,我基本上说"我想用第一组的内容替换整行"(简称\1).