• shell正则表达式


    什么是正则表达式?

    正则表达式在每种语言中都会有,功能就是匹配符合你预期要求的字符串。

    为什么要学正则表达式?

    在企业工作中,我们每天做的linux运维工作中,时刻都会面对大量带有字符串的文本配置、程序、命令输出及日志文件等,而我们经常会有迫切的需要,从大量的字符串内容中查找符合工作需要的特定的字符串。这就要靠正则表达式。因此,可以说正则表达式就是为过滤字符的需求而生的!
    例如:ifconfig的输出取IP,例如:cat /var/log/messages输出等

    两个注意事项:

    正则表达式应用非常广泛,存在于各种语言中,例如:php、python、java等。但是我们今天讲的linux系统运维工作中的正则表达式,即linux正则表达式,最常用正则表达式的命令就是grep(egrep)、sed、awk,换句话说linux四剑客剑客要想工作的各高效,那一定离不开正则表达式配合的。

    正则表达式和我们常用的通配符特殊字符是用本质去别的,这一点要注意。通配符例子:ls .log**这里的就是通配符(表示所有),不是正则表达式

    Shell 正则表达式分为两种:

    • 基础正则表达式:BRE(basic regular express)
    • 扩展正则表达式:ERE(extend regular express),扩展的表达式有+、?、|和()

    下面是一些常用的正则表达式符号

    正则表达式	描述
    	转义符,将特殊字符进行转义,忽略其特殊意义
    ^	匹配行首,awk中,^则是匹配字符串的开始
    $	匹配行尾,awk中,$则是匹配字符串的结尾
    .	匹配除换行符
    之外的任意单个字符,awk则中可以
    []	匹配包含在[字符]之中的任意一个字符
    [^ ]	匹配[^字符]之外的任意一个字符
    [1]	匹配不是中括号内任意一个字符开头的行
    [ - ]	匹配[]中指定范围内的任意一个字符,要写成递增
    ?	匹配之前的项1次或者0次
    +	匹配之前的项1次或者多次
    *	匹配之前的项0次或者多次
    ()	匹配表达式,创建一个用于匹配的子串
    { n }	匹配之前的项n次,n是可以为0的正整数
    {n,}	之前的项至少需要匹配n次
    {n,m}	指定之前的项至少匹配n次,最多匹配m次,n<=m
    |	交替匹配|两边的任意一项
    <	边界符,匹配字符串开始
    >	边界符,匹配字符串结束
    

    在Shell下使用这些正则表达式处理文本最多的命令有下面几个工具:

    命令	描述
    grep	默认不支持扩展表达式,加-E选项开启ERE。如果不加-E使用花括号要加转义符{}
    egrep	支持基础和扩展表达式
    awk	支持egrep所有的正则表达式
    sed	默认不支持扩展表达式,加-r选项开启ERE。如果不加-r使用花括号要加转义符{}
    

    参考:https://www.cnblogs.com/passzhang/p/11664218.html

  • 相关阅读:
    Java异常的分类
    Java SE 6 新特性: Java DB 和 JDBC 4.0
    Java SE 6 新特性: 对脚本语言的支持
    面向对象开发方法优点
    RocketMQ之八:水平扩展及负载均衡详解
    Bluetooth 4.0之Android 解说
    iOS截取视频缩略图的两种方法
    Java NIO Buffer
    spark 启动job的流程分析
    C语言堆内存管理上出现的问题,内存泄露,野指针使用,非法释放指针
  • 原文地址:https://www.cnblogs.com/Mrq-t/p/13294324.html
Copyright © 2020-2023  润新知