0

我有一个操作列表、操作阶段和 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

请注意,操作1425714262没有进入舞台2,而其他人做到了。

考虑该文件已经运行过sort。现在我怎样才能将文件减少到只有尚未进入阶段的行2?因此,最终文件将如下所示:

14257 0 : http://google.com/
14262 0 : http://stackoverflow.com/
4

2 回答 2

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/
于 2013-10-06T13:02:52.977 回答
1

您可以搜索所有以数字、一些空格和数字开头的行2。对于每个匹配删除该行和它上面的两个。之后只剩下带有数字的行01因此使用全局搜索并删除每行不包含冒号的行:

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/
于 2013-10-06T09:52:11.630 回答