转义字符Escape character在正则中的用法

通过()的在基本正则和扩展正则中的不同使用,详细介绍了转义字符的使用注意事项

转义字符Escape character在正则中的用法

Linux中的转义字符通常用 \ 标识开始,转义意味着 \ 后面的字符有特殊的意义,通常是一个控制动作,比如在echo命令中echo -e  \a表示警告,一般情况下能听到一声蜂鸣。

在正则中,也有同样的转义需求,下面把常用的也是容易混淆的几个字符一一说明用法。在引入正文之前,请先看这个题目:

用基本和扩展正则找出/etc/rc.d/init.d/functions文件中行首为某单词(包括下划线)后面跟一个小括号的行:

基本正则表示:grep “^\([[:alpha:]]\|_\).*()” functions

扩展正则表示:egrep  “^([[:alpha:]]|_).*\(\)” /etc/rc.d/init.d/functions

从中可以看到小扩号()在基本正则中没有转义,而在扩展正则中用到了转义\(\),原因是在基本正则的定义中,\(\)是分组的表达,所以()就表示是扩号的原义,而在扩展正则中,分组是用()来表示,所以()的原义需要\(\)来进行转义。

对于点号 . 来说,无论在基本还是扩展正则中,都是匹配任意单个字符的特殊意义,所以如果正则表达式中需要点号 . 本来的意义如文件的后缀.txt, .sh时,就需要用 \ 转义,也可以用[.]来表示。

此外,在使用vim或sed对输出或文件进行查找替换操作时,如果用到的分割符号是 / , 查找或替换的内容包包含有 / 时,需要做转义。例子:

需要把一个文件中所有的/etc替换为/conf,如果用s///,转义如下:

        sed ‘s/\/etc/\/conf/’ file1

可以用更直观的方法来避免转义 / ,如更改为其它分割符@@@或###,这时 / 不需要再转义:

        sed ‘s@/etc@/conf@’ file1 或sed ‘s#/etc#/conf#’,但是这种情况下,如果查找替换的字符包括分割符@ #,同样也需要用 \ 来分别进行转义。

总之,转义字符的使用比较灵活,总的原则是在语法结构中定义有特殊作用的字符,如果想引用字符本身,都需要用 \ 转义。

 

 

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/95854

(10)
Evan LiangEvan Liang
上一篇 2018-04-13 19:57
下一篇 2018-04-13 21:43

相关推荐

  • 新加磁盘的实现方法

    生产中硬盘会不断的出现故障此时我们就需要更换新的硬盘,那么拿到一个新的硬盘之后我们该如何来使用呢?一个新的硬盘首先我们要把旧硬盘上的东西进行备份然后用新的硬盘替代。新硬盘使用之前我们必须要先对新硬盘进行 分区—>创建文件系统—>挂载—>设置开机自启 这几个步骤,那么接下来我们一个一个来说明每个步骤的实现过…

    Linux笔记 2018-04-30
  • 随堂笔记2

    记马哥Linux运维课程第二周知识点(持续更新中)   bin目录 存放二进制数据 给普通用户执行的 在Centos7上 绿色的为… 并不是真正的文件夹 而是快捷方式 bin->usr/bin 内容放在一起 ;在6上,这两者并不是同一个目录,分开放 sbin 给管理员执行的二进制程序 media mnt(mount) 充当外围设备…

    Linux笔记 2018-07-29
  • 学习liunx 系统笔记

    服务器按应用功能可分为:web 服务器   数据库服务器   文件服务器  中间件应用服务器  日子服务器   监控服务器   程序版本控制服务器  虚拟机服务器     邮件服务器   打印服务器   域控制服务器  多媒体服务器  通讯服务器    ERP 服务器等! 服务器按外形可分为:塔式服务器   、机架式服务器  、刀片式服务器。  

    Linux笔记 2018-04-01
  • 磁盘管理(二)

    RAID

    2018-04-26
  • shell脚本之判断httpd是否有异常

    案例 以web为例 大全讲解:如http为例 #/etc/init.d/httpd start      开启httpd #lsof –i :80 [root@centos6 ~/bin]$curl -I -s -o /dev/null -w “%{http_code}\n” http://172.16.0.1 析:-I 是响应头,响…

    Linux笔记 2018-05-20