• 06、shell正则表达式


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

    shell正则表达式有两种:

    基本正则表达式:BRE(基本正则表达式)

    扩展正则表达式:ERE(扩展正则表达式),扩展的表达式有+,?,|和()

    符号 描述 示例
    匹配除换行符( )之外的任意字符

    匹配123:

    echo -e " 123 456" | grep -E '1.3'

    ^ 匹配前面字符串开头

    匹配以abc开头的行:

    echo -e "abc nxyz" | grep -E  "^abc"

    $ 匹配前面字符串结尾

    匹配以xyz结尾的行:

    echo  -e "abd nxyz" | grep -E "nyz$"

    * 匹配前一个字符零个或多个

    匹配x,xo和xoo:

    echo -e "x xo xoo o oo"| grep "xo *"

    x是必须的,批量了o零个或多个

    + 匹配前面字符1个或多个

    匹配abc和abcc:

    echo -e "abc abcc add" | grep -E 'ab+'

    这样是匹配一个别数字:echo “113” | grep -E -o '[0-9]'

    连续匹配多个数字:echo "113" | grep -E -o '[0-9]+'

    ? 匹配前面字符0个或1个

    匹配ac或abc:

    echo -e "ac abc add" | grep -E 'a?c'

    [] 匹配中括号之中的任意一个字符

    匹配a或c:

    echo -e "a b c" | grep -E '[ac]'

    [-。] 匹配中括号中范围内的任意一个字符

    匹配所有字母:

    echo -e "a b c" | grep -E '[a-z]'

    [^] 匹配[^字符]之外的任意一个字符

    匹配a或b:

    echo -e "a b c z" | grep -E '[^cz]'

    匹配末尾数字:echo“ abc:cde; 123” | grep -E'[^;] + $'

    {n}或{n,} 匹配花括号前面的字符至少n个字符

    匹配abc字符串(至少三个字符以上字符串)

    echo -e " a abc c" | grep -E "[a-z]{3}"

    {n,m} 匹配花括号前面的字符至少n个字符,最多m个字符

    匹配12和123(不加便姐夫会匹配字符)

    echo -e "1 12 123 1234"| grep -E -w -o '[0-9]{2,3}'

    < 边界符,匹配字符串开始

    匹配开始时123和1234:

    echo -e "1 12 123 1234"| grep -E -w "<123"

    > 边界符,匹配字符串结束

    匹配结束时1234:

    echo -e " 1 12 123 1234" | grep -E '4>'

    ()

    单元或组合:将小括号里面作为一个组合

    反向引用,n时数字,从1开始编号,表示引用第n个分组匹配的内容

    匹配123a:

    echo "123abc" | grep -E ([a-z0-9]{4})

    匹配出现xo零次或多次:

    echo -e "x xo xoo o oo" | grep -E "(xo)*"

    |

    匹配竖杠两边的任意一个

    匹配12和123:

    echo -e "1 12 123 1234" | grep -E "12|123"

    转义符,将特殊符号转成原累积

    匹配1.2 

    1 .2   否则112也会匹配到

    Posix字符

    描述

    [:数字:] 等效[a-zA-Z0-9]
    [:α:] 等效[a-zA-Z]
    [:降低:] 等效[az]
    [:上:] 等效[AZ]
    [:数字:] 等效[0-9]
    [:空间:] 匹配任意空白字符,等效[ t n r f v]
    [:图形:] 非空白字符
    [:空白:] 空格与定位字符
    [:cntrl:] 控制字符
    [:打印:] 可显示的字符
    [:punct:] 标点符号字符
    [:xdigit:] 十六进制

    示例:

    echo -e“ 1 n12 n123 n1234a” | grep'[[:digit:]]'

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

    命令

    描述

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

    支持的特殊字符

    描述

    w 匹配任意数字和字母,等效[a-zA-Z0-9_]
    W 与 w相反,等效[^ a-zA-Z0-9_]
    b 匹配字符串开始或结束,等效 <和>
    s 匹配任意的空白字符
    S 匹配非空白字符

    空白符

    描述

    n 换行符
    r 回车符
    t 水平制表符
    v 垂直制表符
    0 空值符
    b 退后一格
  • 相关阅读:
    e家modem共享上网方法
    千里奔丧
    解决dbvisualizer乱码问题Ubuntu手记之软件
    目录结构Ubuntu手记之系统配置
    javaFTP编程
    JAVA运行环境设置
    VPNCUbuntu手记之软件
    清洗节气门
    IPMSGUbuntu手记之软件
    AIX下的JAVA线程监视
  • 原文地址:https://www.cnblogs.com/hackerlin/p/12490854.html
Copyright © 2020-2023  润新知