VIM删除重复行

[转贴] VIM删除重复行

下面收录了2篇相关文章

1) 转贴自:http://kangzye.blog.163.com/blog/static/36819223201061705729933/

vim 查找相同的两行,以及删除重复行

要查找相同的两行,先将内容排序,然后查找前一行等于后一行者

:sort

/^\(.\+\)$\n\1

如此就找到了,博大精深的VIM   – . –

 

删除重复行(先排一下序):

:sort
:g/^\(.\+\)$\n\1/d

2) 转贴自:http://kangzye.blog.163.com/blog/static/36819223201061705729933/

关于Vim的删除文本中的重复行。

最近开始使用Vim,感觉此乃外人间之神器,怪不得那么多Vimer对其偏爱有加。现在说说文本中重读行删除问题。在众多的编辑器中Vim对正则的支持估计是最强大的了,很多高级的正则表达式在Vim中都是支持的。以下是我的解法:

:%s/\(.*\)\n\1/\1\r/g
:g/^$/d

这里需要两个命令,后再http://vim.wikia.com/wiki/Uniq_-_Removing_duplicate_lines找到了我的加强版:

:g/^\(.*\)$\n\1$/d
:g/\%(^\1$\n\)\@<=\(.*\)$/d

两者都是前面的命令和我的相似,它删除的是重复项的前面一项;后面的命令删除的重复项的后面的内容。注意两个命令独立的,可以分别使用。对于g命令不是很熟悉,它是一个全局命令,以后会有全面介绍。

第二个命令的解释:

g//d <– Delete the lines matching the regexp
\@<= <– If the bit following matches, make sure the bit preceding this symbol directly precedes the match
\(.*\)$ <– Match the line into subst register 1
\%( ) <— Group without placing in a subst register.
^\1$\n <— Match subst register 1 followed by end of line and the new line between the 2 lines

转载于:https://www.cnblogs.com/air-of-code/p/4703005.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值