vim 将文本中连续的多个空行删除为只留一下一个空行

将文本中连续的多个空行删除为只留一下一个空行

方法一:

:%s/^\n$//g

这种方式对于那种空行中含有tab键和空格的情况删除不了

方法二:

:g/^\s*$\n\s*$/d

这种情况既能删除只有回车的空行,还能删除包含tab键和空格的空行


删除重复行

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


有两个文本,A中第一列表示的是人名,B中第一列表示的也是人名,要求凡是在B中出现的人,都要从A中将对应的行删除掉(这里有个前提条件是AB合并后肯定是偶数行)。

例如:

a.txt
lisi  11 22
qinys  11 202
zhangdong  11   22
wangmazi  1  2
b.txt
zhangdong  test  test
qinys test1 test2


做法:

步骤1:合并两个文本并排序  :vim a.txt中,输入 :r b.txt|sort

步骤2:再去除重复行(key重复出现2次的删除):g/^\(.*\)\s\+.*$\n\1/;+d


有文本如下,要求将第一列的值在文本中出现两次的行全部删掉:

文本:

lisi 11 22 qinys 11 202 qinys 11 22 qinys 11 33 zhangdong 11 33 zhangdong 11 22 zhangdong 11 22 test test111

对于上面的文本即执行后结果应该为:

lisi 11 22
test
test111

解答:g/^\(.*\)\s\+.*$\n\1/,/^[^\1]/ +1 d

备注:

当输入:/^qinys/,/^l/d 时,会提示“使用了逆向的范围,确定交换吗 (y/n)?”
当选择y的时候,则会删除逆向匹配的前两行,否则没有匹配的




  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值