Gvim正则表达式

正则表达式在linux中使用非常广泛。主要是进行一些替换,在编写脚本的时候都会使用到。gvim、perl、sed、tcl中都会使用到。

Gvim正则表达式的使用

  • 搜索命令

    /正则表达式--搜索内容
  • :%s(替换)命令

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

元字符

  .  表示匹配任意字符
[abc] 匹配方括号内的任意一个字符,可以使用-表示字符范围
[a-z0-9] 表示匹配0-9及小写字母
[^abc] ^表示匹配出来括号中的字符
\d 匹配阿拉伯数字
\D 匹配除了阿拉伯数字之外的字符
\x 匹配十六进制数
\X 匹配十六进制数字之外的任意字符
\w 匹配任意数字字母下划线
\W 匹配数字字母下划线之外的任意字符
\t 匹配tab
\s 匹配空白字符
\S 匹配非空白字符

特殊字符

  \* 匹配*
\. 匹配.
\/ 匹配/
\\ 匹配\
\[ 匹配[

表示数量的元字符

  * 匹配0-任意个
\+ 匹配1到任意个
\? 匹配0-1个
\{n,m} 匹配n-m个
\{n,} 匹配n-任意个
\{,n} 匹配0-n个

表示位置的符号

  $ 表示行尾
^ 表示行首
\< 匹配单词词首
\> 匹配单词词尾

实例

1.将所有的help或者是Help换为HELP

:%s/[Hh]elp/HElLP/g
  • substitute--执行的替换操作
  • global执行的是其他命令

2.使用单一空格替换一个或者多个空格

 :%s/ \+/ /g

3.删除没有字符的空行及有空字符的空行

:g/^\s*$/d       d表示删除操作

4.删除某些字符的行

:g/ERROR/d

5.删除每行的前导空格

:%s/^ *//g

6.在每行的开始插入>

:%s/^/->g

7.在所有的行尾加一个句号

:%s/$/。/g

8.删除以数字开头的行

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

9.删除以[a,b,c]开头的行

:%s/^[a|b|c].*//g

替换成空格,还有行,删除行直接替换成空/xxx//g

10.删除重复的行

使用(和)符号括起来的正则表达式,搜索得到的内容可以在后面的正则表达式进行引用\1、\2表示前面搜索到的第一个和第二个

/\(a\+\)[^a]\+\1
头部搜索1-n个a,中间匹配1-n个非a,最后\1,表示使用之前的内容和头部一致
意义:搜索头和尾处a的个数相同的字符串
aabbbbaa aaacccdhaaa abbbaa(x)

删除重复的行

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

11.将多行重复的行压缩至一行

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

复杂的例子

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

ABC:XYZ

:%s/\(.*\):\(.*\)/\2:\1/g

搜索两组进行替换

2.将所有方法中的foo(a,b,c)的实例更改为foo(b,a,c)

foo(bar(8),x+y+z,5)-->foo(x+y+z,bar(8),5)

:%s/foo(\([^,]*,\[^,]*,[^,]*\))/foo(\2,\1,\3)/g

3.查找test开头的后面为一个或者式多个空格,然后作为一个单词。将test和这个单词调换位置

:%s/\(test\)\s\+\(\w\+\)/\2 \1/g

函数式

格式

:%s/替换字符串/=函数式

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

%s/\<id\>/\=line(".")

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

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

与perl正则表达式的区别

Sed用法

直接处理文件

1.删除所有的空行

sed '/^$/d' *.txt

2.删除所有只包含空格或者制表位的行

sed '/^[   ]*$/d' price.txt

3.删除所有的引号

sed 's/"//g' price.txt

正则表达式非常的灵活,同一种效果有不同的处理方式,这里只简单介绍常用的操作,其他操作后续补充

Gvim基础操作(正则表达式)-02的更多相关文章

  1. Gvim基础操作-01

    Gvim基础操作 进行代码或者是文本.脚本都要使用到文本编辑工具. vi是visual的缩写,其意为可视化.它是Unix系统文本编辑的标准工具.利用光标在屏幕上的移动,用户可以方便的建立.修改或者插入 ...

  2. ES5基础之正则表达式02:范围类、预定义类和边界字符

    1.范围类 //元字符 /* * 正则表达式由两种基本字符类型组成 * 1.原义文本字符:例如123abc * 2.元字符:元字符是在正则表达式中有特殊含义的非字母字符 */ //常见特殊符号:. * ...

  3. 实训任务02:Hadoop基础操作

    实训任务02:Hadoop基础操作 班级            学号               姓名 实训1:创建测试文件上传HDFS,并显示内容 需求说明: 在本地计算机上创建测试文件helloH ...

  4. 《Genesis-3D开源游戏引擎-官方录制系列视频教程:基础操作篇》

    注:本系列教程仅针对引擎编辑器:v1.2.2及以下版本 G3D基础操作   第一课<G3D编辑器初探> G3D编辑器介绍,依托于一个复杂场景,讲解了场景视图及其基本操作,属性面板和工具栏的 ...

  5. MYSQL 基础操作

    1.MySQL基础操作 一:MySQL基础操作 1:MySQL表复制 复制表结构 + 复制表数据 create table t3 like t1; --创建一个和t1一样的表,用like(表结构也一样 ...

  6. (大数据工程师学习路径)第一步 Linux 基础入门----正则表达式基础

    介绍 虽然我们这一节的标题是正则表达式,但实际这一节只是介绍grep,sed,awk这三个命令,而正则表达式作为这三个命令的一种使用方式(命令输出中可以包含正则表达式).正则表达式本身的内容很多,要把 ...

  7. 黑马程序员:Java基础总结----正则表达式

    黑马程序员:Java基础总结 正则表达式   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 正则表达式 import  java.util.regex.*; 符合一定规 ...

  8. 【Linux 操作系统】Ubuntu 基础操作 基础命令 热键 man手册使用 关机 重启等命令使用

    . : 关机, 如果将Linux默认运行等级设置为0, 系统将无法启动; -- : 多用户模式, 允许使用网络文件系统, 一般不使用图形界面登陆就是这种模式; -- : 多用户图形界面模式, 该模式下 ...

  9. python基础之 正则表达式,re模块

    1.正则表达式 正则表达式:是字符串的规则,只是检测字符串是否符合条件的规则而已 1.检测某一段字符串是否符合规则 2.将符合规则的匹配出来re模块:是用来操作正则表达式的 2.正则表达式组成 字符组 ...

随机推荐

  1. Invalid bound statement (not found): com.zheng.mapper.UserMapper.login

    错误的原因:mybatis中dao接口与mapper配置文件在做映射绑定的时候出现问题,简单说,就是接口与xml要么是找不到,要么是找到了却匹配不到. mapper接口开发规范 1.Mapper.xm ...

  2. 齐博x1标签之异步加载标签数据

    为什么要异步加载标签?他有什么好处 如果一个页面的标签太多,又或者是页面中某一个标签调用数据太慢的话,就会拖慢整个页面的打开,非常影响用户体验.这个时候,用异步加载的话,就可以一块一块的显示,用户体验 ...

  3. Codeforces Round #829 (Div. 1/Div. 2) 1753 A B C D 题解

    Div1A / 2C. Make Nonzero Sum 令最后每个\(a_i\)的系数为\(c_i\)(\(c_i=1/-1\)),发现只要满足\(c_1=1\)(下标从1开始),且c中没有两个-1 ...

  4. cmd中pip加速的方法

    临时加速: pip install dlib -i https://pypi.tuna.tsinghua.edu.cn/simple/ 永久加速: 在user文件夹里新建pip文件夹,再建pip.in ...

  5. Sentinel 介绍与下载使用

    sentinel 前方参考 计算QPS-Sentinel限流算法 https://www.cnblogs.com/yizhiamumu/p/16819497.html Sentinel 介绍与下载使用 ...

  6. $_SERVER['HTTP_USER_AGENT']:在PHP中HTTP_USER_AGENT是用来获取用户的相关信息的,包括用户使用的浏览器,操作系统等信息

    在PHP中HTTP_USER_AGENT是用来获取用户的相关信息的,包括用户使用的浏览器,操作系统等信息. 我机器:操作系统:WIN7旗舰版 64操作系统 以下为各个浏览器下$_SERVER['HTT ...

  7. 九、kubernetes命令行工具kubectl

    为了方便在命令行下对集群.节点.pod进行管理,kubernetes官方提供了一个管理命令:kubectl kubectl作为客户端CLI工具,可以让用户通过命令行对Kubernetes集群进行操作. ...

  8. Istio(十三):Istio项目实际案例——Online Boutique

    目录 一.模块概览 二.系统环境 三.创建Kubernetes(k8s)集群 3.1 创建Kubernetes(k8s)集群 3.2 Kubernetes集群环境 四.安装istio 4.1 安装Is ...

  9. 统计Oracle数据库某个用户下面的对象个数

    统计某个用户下面的对象个数 包括表,视图,同义词,函数,存储过程,包,触发器,索引,约束,序列. 1. sql语句 SELECT (SELECT COUNT(*) FROM USER_TABLES) ...

  10. 二叉搜索树 - C++ 实现

    二叉搜索树 - C++ 实现 概述 Overview 二叉查找树(英语:Binary Search Tree, 后文中简称 BST), 也称为二叉搜索树.有序二叉树(ordered binary tr ...