搜索命令:/正则表达式

替换命令::s/正则表达式/替换字符串/选项

:%s/str1/str2/g   该命令中:表示进入命令行模式,%表示对该文件所有行有效,s表示查找并替换,正则表达式str1表示被替换的内容,字符串str2表示替换后的内容,g表示整行有效

正则表达式字符匹配

实例替换

            

 实例删除

3.删除所有空行       

  :g/^$/d  (删除没有任何字符除了一个回车符的行)  

  :g/^[ \t]*$/d      (删除有空格或是tab符号的所有行)                 

4.删除含有某些字符的行     

  :g/ERROR/d  (删除含有ERROR字符的所有行,d是删除指令) 

5.删除每行的所有前导空格   

  :%s/^ *//g  (后面的//之间没有任何东西,也就是说不用任何东西去替换前面的前导空格,即删除前导空格)

6.在文件中的每一行的开始插入 -> (或者换其他字符)

  :%s/^/->/g

7.在每一行的尾部加上一个句号(或者其他字符)

  :%s/$/。/g

8.删除以数字开头的行

  :%s/^\d.*$//g

9.删除以abc三个字母一起开头的行

  :%s/^[a|b|c].*$//g或者:%s/^abc.*$//g

10.删除重复行

  :%s/^\(.*\)\n\1$/\1/g      将两行重复行压缩成一行(/^匹配到行首,.*匹配任意多个字符,\(.*\)相当于把之前匹配得到的字符保存下来,\1就表示保存的内容,\n\1表示换行之后再去匹配之前保存的字符,到这里就匹配了两行,$接着到换行之后的行尾,之后的\1表示用前面保存的匹配到的第一行字符去替换匹配得到的两行字符,这就相当于把两行重复行压缩成一行)

  :%s/^\(.*\)\(\n\1)\+$/\1/g       将多行重复行压缩成一行  (\n\1)\+表示匹配任意多重复行

 实例对调

1.交换列表中所有连字符分隔的条目的顺序

  如将ABC:XYZ对换成XYZ:ABC

  :%s/\(.*\):\(.*\)/\2:\1/g  \1表示第一次保存的内容,\2表示第二次保存的内容

函数式

格式:

  :s/str1/\=函数式

例1:将各行的id字符串替换为行号

  :%s/\<id\>/\=line(".")    \<id\>匹配的是单独的词id,而不是amid这类嵌在某个单词里面的字符。line(".")是返回各行行号的一个函数。

例2:将每行开头的单词替换为(行号-10)

  :%s/^\<\w\+\>/\=(line(".")-10)

与Perl正则表达式的区别

Sed用法(用来直接处理文件)

vi正则表达式的更多相关文章

  1. vim正则表达式~转

    vim正则表达式(转) Vim中的正则表达式功能很强大,如果能自由运用,则可以完成很多难以想象的操作. 如果你比较熟悉Perl的正规表达式,可以直接参照与Perl正则表达式的区别一节. 一.使用正则表 ...

  2. vim正则表达式(转)

    Vim中的正则表达式功能很强大,如果能自由运用,则可以完成很多难以想象的操作. 如果你比较熟悉Perl的正规表达式,可以直接参照与Perl正则表达式的区别一节. 一.使用正则表达式的命令 使用正则表达 ...

  3. VIM正则表达式。

    看了那个30分钟正则表达式入门.但是是在VIM使用过程中偶尔会出现达不得想要效果的情况.后面百度了下,确然,VIM的正则还是有点区别的. 转自:http://www.cppblog.com/kefen ...

  4. VIM中的正则表达式及替换命令

    VIM中的正则表达式及替换命令 一.使用正则表达式的命令 使用正则表达式的命令最常见的就是 / (搜索)命令.其格式如下: /正则表达式 另一个很有用的命令就是 :s(替换)命令,将第一个//之间的正 ...

  5. VIM 用正则表达式

    VIM 用正则表达式 批量替换文本,多行删除,复制,移动 在VIM中 用正则表达式 批量替换文本,多行删除,复制,移动 :n1,n2 m n3     移动n1-n2行(包括n1,n2)到n3行之下: ...

  6. Linux vi/vim命令高效助记图

    图片来源网上,如有侵权,请告知,我会删除掉,谢谢~ 常用编辑按键: 1 vi +[num] file 打开文件,并将光标置于第n行首 2 vi + file 打开文件,并将光标置于最后一行首 3 vi ...

  7. VIM 用正则表达式,非贪婪匹配,匹配竖杠,竖线, 匹配中文,中文正则,倒数第二列, 匹配任意一个字符 :

    VIM 用正则表达式 批量替换文本,多行删除,复制,移动 在VIM中 用正则表达式 批量替换文本,多行删除,复制,移动 :n1,n2 m n3     移动n1-n2行(包括n1,n2)到n3行之下: ...

  8. Vim特定行行尾追加

    python print 替换 logging 1.print语句最后追加")". :%s/\(.*\)print \(.*\)/\1print \2)/g 2."    ...

  9. vim 正则替换

    http://www.cppblog.com/kefeng/archive/2010/10/20/130574.html Vim中的正则表达式功能很强大,如果能自由运用,则可以完成很多难以想象的操作. ...

随机推荐

  1. 『心善渊』Selenium3.0基础 — 13、Selenium操作下拉菜单

    目录 1.使用Selenium中的Select类来处理下拉菜单(推荐) 2.下拉菜单对象的其他操作(了解) 3.通过元素二次定位方式操作下拉菜单(重点) (1)了解元素二次定位 (2)示例: 页面中的 ...

  2. 用python的matplotlib根据文件里面的数字画图像折线图

    思路:用open打开文件,再用a=filename.readlines()提取每行的数据作为列表的值,然后传递列表给matplotlib并引入对应库画出图像 代码实现:import matplotli ...

  3. 关于基于Nexus3和Docker搭建私有Nuget服务的探索

    背景简介 NuGet是Microsoft开发平台的程序集包管理器,它由客户端工具和服务端站点组成,客户端工具提供给用户管理和安装/卸载软件程序包,以及打包和发布程序包到NuGet服务端站点等功能,服务 ...

  4. 9、ssh服务详解及优化

    ssh是"secure shell protocol"的简写,在进行数据传输之前,ssh先对练级数据包通过加密技术进行加密处理, 加密后再进行数据的传输,从而确保了数据的安全: s ...

  5. 24、mysql数据库优化

    24.1.如何判断网站慢的排查顺序: 客户端->web->nfs->数据库: 24.2.uptime命令详解: [root@backup ~]#uptime 13:03:23 up ...

  6. css input 设置只读样式

    input[readonly]{ background-color: #EEEEEE !important; }

  7. 基于Redis的分布式锁设计

    前言 基于Redis的分布式锁实现,原理很简单嘛:检测一下Key是否存在,不存在则Set Key,加锁成功,存在则加锁失败.对吗?这么简单吗? 如果你真这么想,那么你真的需要好好听我讲一下了.接下来, ...

  8. python3 依赖倒置原则示例

    场景 针对园区停车信息,需要对各个公司提供的停车数据进行整合并录入自家公司的大数据平台 数据的录入无外乎就是对数据的增删改查 下面上一个常规的写法(未符合依赖倒置),整合来自 长安和丰田 的停车数据 ...

  9. Binding(五):多路绑定

    Binding不止能绑定一个源,它还能绑定多个源,这就是我们这节要讲的多路绑定:MultiBinding. 使用多路绑定跟一般的绑定还是有区别的,首先它并不能很好的在标记扩展中使用,另外,使用多路绑定 ...

  10. JavaWeb中Servlet和Jsp跳转路径的写法

    最近学习时,常常要写一些页面之间的跳转或者前台和后端之间的跳转 下面总结一下自己对于这些跳转路径的写法 声明:以下讲到的jsp文件都默认在WebRoot目录下 1.表单(Jsp)->Servle ...