zoukankan      html  css  js  c++  java
  • bash正则表达式

    星号*:

    匹配它前面的字符串或正则表达式任意次(包括0次)。
    比如:1122*
    可能匹配的字符串有:112112211222221123131231 ......

    句号.:

    匹配除换行符之外的任意一个字符。
    比如:"112.",将匹配112+至少一个字符
    可能匹配的字符串有:11211122、112abc、1123131231 ......,但不匹配112

    插入符号^:

    匹配一行的开始,但有时依赖于上下文环境,可能表示否定正则表达式中一个字符串的意思。
    比如:“^abc”只匹配行首为abc的字符串

     美元符$:

    在一个正则表达式的末尾,匹配一行的结尾。
    比如:"123$",将只能匹配到行尾为123的字符行,"^$"匹配匹配一个空行。

    方括号[]:

    匹配方括号内指定的字母集中的一个字符。
    比如:"[abc]",将匹配字符a、b、c中的任意一个字符;而"[^abc]",将匹配除abc之外的所有字符。

    反斜线符号:

    转义一个特殊的字符,使这个字符得到字面意义的解释。
    比如:"$",将表示它的原意"$""\",表示""。

    转义尖括号<>:

    用于标记单词边界。尖括号必须是转义的,否则它们只是字符的字面含义。
    比如:"<the>"匹配"the",但不匹配"them""there"

    问号?:

    匹配0个或1个前面的字符,用于匹配单个字符。
    比如:"ab?c",将匹配"ac""abc"

    加号+:

    匹配一个或多个前面的字符,它和星号*很相似,单它不匹配0个字符的情况。
    比如:"ab+c"将匹配"abc""abbc""abbb...c"等。

    转义波形括号{}:

    指示匹配前面正则表达式的次数。波形括号必须是转义的,否则只有字符的字面含义。
    比如:"[0-9]{5}"将匹配5位数字。

    圆括号():

    包含一组正则表达式。与"|"或expr操作符一起使用。

    竖线|:

    正则表达式的""操作符匹配一组可选的字符。
    
    比如:"a(b|c)d"将匹配"abd""acd"

     正则表达式比较操作符

    [weblogic@etpmalldev6 logs]$ digit=132
    [weblogic@etpmalldev6 logs]$ [[ $digit =~ [0-9] ]]
    [weblogic@etpmalldev6 logs]$ echo $?
    0
    
    [weblogic@etpmalldev6 logs]$ digit="sfsfs"
    [weblogic@etpmalldev6 logs]$ [[ $digit =~ [0-9] ]]
    [weblogic@etpmalldev6 logs]$ echo $?
    1

     实例:

    测试数据:

    [weblogic@etp-mall-dev7][/tpdata/shell_script]$ cat list.txt 
    1122
    112
    11222
    2211
    22111
    1122222112
    3131231112112
     
    abdde
    abede
    bbcdefss
    bbdde
    the people's replublic of China
    fafslk;kfak
    fdoutjjlsjpwkfks
    fasfsaFSAFSFSAF
    FSAFSFAFFS
    abdabeccde

    查找包含字符串"112"且其后至少有一个字符的行:

    [weblogic@etp-mall-dev7][/tpdata/shell_script]$ grep "112." list.txt
    1122
    11222
    1122222112
    3131231112112

    查找字符"d"和"e"之间有一个任意字符的行:

    [weblogic@etp-mall-dev7][/tpdata/shell_script]$ grep "d.e" list.txt 
    abdde
    bbdde

    查找在字符"2"后有两个任意字符的行:

    [weblogic@etp-mall-dev7][/tpdata/shell_script]$ grep "2.." list.txt 
    11222
    2211
    22111
    1122222112
    3131231112112

    查找/etc/passwd文件中root账号的信息,不使用插入符号^匹配:

    [weblogic@etp-mall-dev7][/tpdata/shell_script]$ grep "root" /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    operator:x:11:0:operator:/root:/sbin/nologin

    查找/etc/passwd文件中root账号的信息,使用插入符号^匹配:

    [weblogic@etp-mall-dev7][/tpdata/shell_script]$ grep "^root" /etc/passwd
    root:x:0:0:root:/root:/bin/bash

    查看有空行有多少行:

    [weblogic@etp-mall-dev7][/tpdata/shell_script]$ grep "^$" list.txt | wc -l
    1

    查看所有匹配112*的行:

    [weblogic@etp-mall-dev7][/tpdata/shell_script]$ grep "112*" list.txt 
    1122
    112
    11222
    2211
    22111
    1122222112
    3131231112112

    查看所有以数字"3"开头,"2"结尾的行:

    [weblogic@etp-mall-dev7][/tpdata/shell_script]$ grep "<3.*2>" list.txt --color
    3131231112112

     查看文件中含有至少11个连续小写字母的行:

    [weblogic@etp-mall-dev7][/tpdata/shell_script]$ grep "[a-z]{8}" list.txt 
    bbcdefss
    the people's replublic of China
    fdoutjjlsjpwkfks
    abdabeccde
  • 相关阅读:
    CSS 中 Font-Family 中英文对照表
    0号首页,移动应用快捷门户
    身边的大数据和我们的着手点
    php单例模式
    原生JS实现ajax与ajax的跨域请求
    two.js之实现动画效果
    H5中的拖放
    简说chart2.4的应用,以及Uncaught ReferenceError : require is not defined的解决
    JS中的作用域以及全局变量的问题
    JavaScript 框架------------AngularJS(下)
  • 原文地址:https://www.cnblogs.com/xiluhua/p/5686583.html
Copyright © 2011-2022 走看看