zoukankan      html  css  js  c++  java
  • 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 退后一格
  • 相关阅读:
    /etc/sysctl.conf 控制内核相关配置文件
    python 并发编程 非阻塞IO模型
    python 并发编程 多路复用IO模型
    python 并发编程 异步IO模型
    python 并发编程 阻塞IO模型
    python 并发编程 基于gevent模块 协程池 实现并发的套接字通信
    python 并发编程 基于gevent模块实现并发的套接字通信
    python 并发编程 io模型 目录
    python 并发编程 socket 服务端 客户端 阻塞io行为
    python 并发编程 IO模型介绍
  • 原文地址:https://www.cnblogs.com/hackerlin/p/12490854.html
Copyright © 2011-2022 走看看