[英]vim count number of lines not containing a pattern
给定下面的CSV文件,我如何使用vim来计算不包含的行数: fff
或sss
aaa bbb ccc ddd eee, 3221
aaa ddd eee fff, 3222
fff ddd sss www aaa, 3223
ggg www qqq, 3224
sss aaa vvv, 3225
我有这个,但它只匹配一些而不是全部
%s/\v^(fff|sss)//gn
^
锚定在行的开头,因此它匹配以fff或sss开头的行 。 只有在方括号内( [^a]
匹配除a
以外a
任何内容时)它才是负数。
你正在寻找这样的东西:
%s/\v^((fff|sss)@!.)*$//gn
更多信息:help @!
。
避免复杂正则表达式的另一个解决方案是使用全局命令在与模式不匹配的所有行上递增变量:
let var=0
v/\v(sss|fff)/let var+=1
echo var
编辑:
您可以使用以下全局命令删除所有行:
g/\v(sss|fff)/d
您可以使用%从vim调用命令行的权限。 因此,输入以下内容并按Enter键。 它将带你到vim外给你答案。 再次按回车键,你就像以前一样回到了vim。
:%!grep -c -v -P "fff|sss"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.