搜索命令:/正则表达式

替换命令::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. Spring Cloud 和 Dubbo,到底用哪个好?

    Spring Cloud是http协议传输,带宽会比较多,同时使用http协议一般会使用JSON报文,消耗会更大 dubbo的开发难度较大,原因是dubbo的jar包依赖问题很多大型工程无法解决 sp ...

  2. Windows7 如何添加excel,word到鼠标右键

    1.添加word到鼠标右键新建 首先Windows键+R---->输入regedit并回车------>看到HKEY_CLASSES_ROOT展开------>找到.doc展开--- ...

  3. 4.6 Python3 进阶 - 递归函数

    >>返回主目录 源码 # 定义及特性 # 简单递归思维练习,求和:1+2+3+-+100 # 思路:sum(100) = sum(99) + 100 # sum(99) = sum(98) ...

  4. Linux 常用命令 随口说

    ls cd pwd du disk usage -h -s. 文件大小 df disk free -h 磁盘占用 fdisk mount top/htop + ps + grep + wc + pki ...

  5. LAMP——实现phpMyadmin、wordpress及Discuz应用部署

    一.环境准备 操作系统:Centos8.3.2011 软件:Apache2.4.37.Mysql8.0.21.PHP7.2.24 二.安装过程 1.安装phpmyadmin 1.1.安装软件包并启动服 ...

  6. Docker环境RabbitMq配置SSL

    RabbitMQ要对外提供服务,考虑到安全性,配置SSL进行访问,ssl端口5671,内部仍然使用5672进行访问,两者同时兼容. 安装环境 CentOS 7.5 Docker 1.13.1 Git ...

  7. flink数据广播场景总结

    数据集广播,主要分为广播变量,广播维表(数据集)两种,一种为变量,一种为常量(抽象的说法): 一.数据广播背景 对于小变量,小数据集,需要和大数据集,大流进行联合计算的时候,往往把小数据集广播出去,整 ...

  8. bugku Crypto 下半部分wp

    1. 百度托马斯这个人居然还发明了一种轮转的加密法,发现原理是,他将很多行乱序的26个字母,插到一根柱子上,参考糖葫芦的样子,可以旋转每一行,设置自己要发送的明文后,向对方发送乱码的一列,对方只要将这 ...

  9. Mybatis代码自动生成(含测试)

    一.建立数据库 create database shixun; use shixun; create table user( id int primary key auto_increment , u ...

  10. ftp错误&&详解方案

    一.FTP错误代码列表150 文件状态良好,打开数据连接 200 命令成功 202 命令未实现 211 系统状态或系统帮助响应 212 目录状态 213 文件状态 214 帮助信息,信息仅对人类用户有 ...