欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

shell编程--正则表达式

程序员文章站 2022-07-10 10:41:04
...

1.BRE模式

1.1 特殊字符

.*[]^${}\+?|()

一定要使用需要转义

  • . :匹配除换行符外的任意单个字符

  • []:匹配某个特定字符(必须匹配到)

    sed -n '/[ch]at/p' data6
    
  • ^:锁定到行首

    echo "The book store" | sed -n '/^book/p'
    
  • $:锁定到行尾

    sed '/^$/d' data5 #过滤掉空白行
    
  • [^]:排除型字符组

  • [-]:区间

    sed -n '/[c-h]at/p' file.txt
    echo "19a" | sed -n '/^[0-9][0-9]$/p'
    
  • 特殊字符组

    描述
    [[:alpha:]] 匹配任意字母字符,不管是大写还是小写
    [[:alnum:]] 匹配任意字母数字字符09、AZ或a~z
    [[:blank:]] 匹配空格或制表符
    [[:digit:]] 匹配0~9之间的数字
    [[:lower:]] 匹配小写字母字符a~z
    [[:print:]] 匹配任意可打印字符
    [[:punct:]] 匹配标点符号
    [[:space:]] 匹配任意空白字符:空格、制表符、NL、FF、VT和CR
    [[:upper:]] 匹配任意大写字母字符A~Z
    • 例如:
      echo "abc" | sed -n '/[[:alpha:]]/p'
      
  • *:表示该符号前面的字符出现0次或多次


下面的是扩展的,sed不支持,gawk可以

  • ?:表前面的字符出现0或1次
  • +:表前面的字符至少出现1次
  • {m}:表前面的表达式准确的出现m次
  • {m,n}:至少出现m次,至多出现n次
    echo "bet" | gawk --re-interval '/be{1}t/{print $0}'
    echo "bt" | gawk --re-interval '/be{1,2}t/{print $0}'
    
  • |:管道符号,用逻辑OR方式指定正则表达式引擎要用的两个或多个模式。如果任何一个模式匹配了数据流文本,文本就通过测试。
    echo "The cat is asleep" | gawk '/cat|dog/{print $0}'
    
  • ():表达式分组
    echo "Sat" | gawk '/Sat(urday)?/{print $0}'