我有一个包含以下行的文件:
one one
one one
two two two
one one
three three
one one
three three
four
我想从文件中删除所有出现的重复行,只保留非重复行。因此,在上面的示例中,结果应该是:
two two two
four
I saw 这是对类似问题的回答 https://stackoverflow.com/a/1270689/1806553。我尝试修改前一行,如下所示:
:syn clear Repeat | g/^\(.*\)\n\ze\%(.*\n\)*\1$/exe 'syn match Repeat "^' . escape(getline ('.'), '".\^$*[]') . '$"' | d
但它不会删除所有出现的重复行,它仅删除一些出现的重复行。
我怎样才能在 vim 中做到这一点?或者具体来说我怎样才能在 vim 中使用 ex 做到这一点?
澄清一下,我不是在寻找sort u
.
如果您有权访问 UNIX 风格的命令,您可以执行以下操作:
:%!sort | uniq -u
The -u
的选项uniq
命令执行您需要的任务。来自uniq
命令的帮助文本:
-u, --unique
only print unique lines
但我应该注意,这个答案假设您不介意输出与输入文件可能已经具有的任何排序顺序不匹配。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)