duk*_*ave 13 regex vi vim duplicate-data
此问题已经解决了如何删除重复行,但强制首先对列表进行排序.
我想执行删除连续的重复行步骤(即uniq)而不首先对它们进行排序.
以前的例子:
Foo
Foo
Bar
Bar
Run Code Online (Sandbox Code Playgroud)
示例之后:
Foo
Bar
Run Code Online (Sandbox Code Playgroud)
ram*_*ion 13
如果要删除可以使用的非连续重复项
:g/^\(.*\)\ze\n\%(.*\n\)*\1$/d
Run Code Online (Sandbox Code Playgroud)
(除去最后一行副本之外的所有内容)
哪个会改变
Foo
Bar
Foo
Bar
Foo
Baz
Foo
Quux
Run Code Online (Sandbox Code Playgroud)
至
Bar
Baz
Foo
Quux
Run Code Online (Sandbox Code Playgroud)
如果要删除除第一个副本以外的所有副本,请尝试
:g/^/m0
:g/^\(.*\)\ze\n\%(.*\n\)*\1$/d
:g/^/m0
Run Code Online (Sandbox Code Playgroud)
哪个会改变
Foo
Bar
Foo
Bar
Foo
Baz
Foo
Quux
Run Code Online (Sandbox Code Playgroud)
至
Foo
Bar
Baz
Quux
Run Code Online (Sandbox Code Playgroud)