将文本中连续的多个空行删除为只留一下一个空行
方法一:
:%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
备注:
当输入:/^qinys/,/^l/d 时,会提示“使用了逆向的范围,确定交换吗 (y/n)?”
当选择y的时候,则会删除逆向匹配的前两行,否则没有匹配的