lod*_*dge 4 regex vim awk grep sed
我有一个文件,我需要过滤具有(或没有)N次出现的模式的行.也就是说,如果我的模式是字母,o
而且我要匹配字母o
恰好出现4次的行,则表达式应匹配以下示例行中的第一行但不匹配其他行:
foo foo
foo
foo foo foo
Run Code Online (Sandbox Code Playgroud)
我可以用vim中的正则表达式,或sed,awk或任何其他工具来做到这一点.我用谷歌搜索,并没有发现任何人做过类似的事情.可能会做一个脚本或类似的东西来解析每一行.有没有人做过类似的事情?
谢谢
你可以使用如下的正则表达式:
(?=(.*o){4})(?!(.*o){5,}).*
Run Code Online (Sandbox Code Playgroud)
Regexr - http://regexr.com?2toro
这应该适用于您想要的任何模式.例如,您想要找到其中包含四个foos的行,请使用:
(?=(.*foo){4})(?!(.*foo){5,}).*
Run Code Online (Sandbox Code Playgroud)
Regexr - http://regexr.com?2tosa