我有一个操作列表,操作阶段和URL。此列表如下所示:
14257 0 : http://google.com/
14259 0 : http://www.microsoft.com/
14259 1
14259 2
14261 0 : http://www.apple.com/
14261 1
14261 2
14262 0 : http://stackoverflow.com/
14262 1
14263 0 : http://dotancohen.com/
14263 1
14263 2
请注意,操作14257
和14262
没有进入阶段2
,而其他操作则进入。{/ p>
请考虑该文件已通过sort
运行。现在,我如何将文件缩小为仅限于未进入2
的行?因此,最终文件看起来如此:
14257 0 : http://google.com/
14262 0 : http://stackoverflow.com/
答案 0 :(得分:2)
所以基本上,你想要删除所有在接下来的2行继续的行。 我想,这个做到了:
g/\v^%(<(\d+)>\D.*\n)%(\1.*\n)%(\1 2)/d 3
然后再做一次v/^\v\d+\D\d\D:/d
,你就会离开:
14257 0 : http://google.com/
14262 0 : http://stackoverflow.com/
答案 1 :(得分:1)
您可以搜索以数字,某些空格和数字2
开头的所有行。对于每个匹配,删除该行和它上面的两个。之后,只剩下数字为0
和1
的行,因此请使用全局搜索并删除不包含冒号的每一行:
function! DeleteNonContinuous()
while search( '^\v\d+\s+2', 'W' ) != 0
execute "normal 2kdelete"
endwhile
%v/:/delete
endfunction
command! DNC :call DeleteNonContinuous()
使用它像:
:DNC
产量:
14257 0 : http://google.com/
14262 0 : http://stackoverflow.com/