正则表达式

对文本内容进行过滤,查找,匹配,正则可以匹配完整的大小写

        1.元字符

        . 表示任意单个字符

        转义符:\

        ()分组 \(\)

        【】指定范围之内的任意单个字符

        【0-9a-zA-Z】

        【^az】:取反,显示不包含的内容

        【【:blank】】:匹配空格,不是tab键的

        2.表示次数:

        *:匹配前面的字符任意次,包括0次尽可能长的匹配 echo gooogle | grep "go*gle":表示这个o匹配几个可以为0或者多个

        .*:匹配前面的字符任意次,不包括0次,也就匹配所有 echo ggle | grep "go.*gle"

        \?:匹配前面的字符出现0次或者1次有且只有一次

        \+:匹配前面出现的字符,至少得有一次,就是>=1

        \{n\}:匹配前面出现的字符等于几次 echo google | grep “go\{2\}gle"

        \{m,n\} :最少m次,最多n次

        \{,n\}:匹配前面的字符最多n次,没有也算

        \{n,\}:匹配前面的字符最少n次,只有连续出现n次,后面的都算

        通配符:

        匹配的是文件名,而且不能精确的匹配大小写

        匹配ens33的ip地址和mac地址

        ifconfig ens33 | grep -o "[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+"

        位置锚定:

        ^:行首锚定,以什么为开头         cat /etc/passwd | grep "^root"

        $:行尾锚定,以什么为结尾         cat /etc/passwd | grep "bash$"

        ^root$:匹配行模式 ,单独的一行只有root

        ^$:开头为空,空白行

        ^[[:space:]]*$

        cat /etc/fstab | grep "^[^#]" 匹配非#行

        \<或者\b 词首锚定 用于匹配单词模式的左侧 echo hello -123 | grep "\bhello"

从左往右全部都算,所有一起都包含,所有算匹配到

        \> 或者\b 词尾锚定 用于匹配单词模式的右侧 echo hello -123 | grep "\b123"

只匹配右侧的单词,左侧的单词不匹配

        \broot\b:匹配整个单词

        \<root\>:匹配整个单词

        

       3.分组以及逻辑或

        () 分组

        \| 或者

        举例:

        echo abcabcabc | grep "\(abc\)\{3\}"

        echo golgogle | grep "\(go\)\{1\}"

        echo golgogle | grep "\(go\)\{1\}gle"

        echo 1abc | grep "1\|2abc"

        echo 1abc2bc | grep "\(1\|2\)abc"

        4.扩展正则表达式

        grep -E 扩展正则表达式 不需要加 \ 了

        egrep 也可以

        

        025-83346023

        0512-8776655

        021-8998877

        cat 123.txt | grep -E "[0-9]{3,4}+-[0-9]{8}"

        544564317@qq.com

        CICIfireway@126.com

        aaabbbccc@189.cn

        cat 123.txt | grep -E "[0-9a-zA-Z]+@[0-9a-zA-Z]+\.[0-9a-zA-Z]+

        66606@qq.com

        544677766@qq.com

        544564317@qq.com

        5555555555@qq.com

        cat 123.txt | grep -E "[0-9]{5,10}+@[q]{2}+\.[com]+"

        cat 123.txt | grep -E "[0-9|()]+|()-[0-9]{3}|-[0-9]+"

        987-123-4567

        987 456-1230

        (123) 456-7890

        cat 123.txt | grep -E "^(\([0-9]+\)|[0-9]+)[ -]?[0-9]+-[0-9]+"

        cat 123.txt | grep -E "\(?[0-9]+\)?[ -]?[0-9]+-[0-9]+"

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值