linux哪些地方用到了正则

一   linux中正则使用杂谈

①  常见

常见: 'awk'、'sed'、'grep'、'vim'、'nginx' --> '工具命令'

  1) grep支持'三种'正则表达式BRE,ERE,PCRE,而其'默认'使用的是'BRE' --> grep -P|E 

  2) sed'默认'也使用'BRE',sed -E或sed -r'使用ERE',sed'不支持'PCRE

  3) awk'默认'就是'ERE',它不支持BRE与PCRE

  4) vim 的正则匹配引擎是'独有'的, 其风格'类似'于POSIX,但是也支持各种自己实现的'高级特性'

  5) nginx使用的是'PCRE'正则

  6) PCRE发布了两个'新的轮子'pcregrep与pcre2grep --> "了解即可"

重要: 'perl'、'python'、'lua'、'Java' --> "语言类,按照自己认为的重要程度排序"

②  [[ expression ]]中的=~  重点

1) bash '3.0'  在 '[[  ]]' 这个运算子加入 'egrep形式'的 regexp,'ERE'正则风格

备注: 一会'粗略'讲解'ERE'的正则风格;ERE不支持'环视匹配',不支持'\d',但支持'[[:digit:]]'

核心: ^$|[]()\.*+? 不需要'转义'

2) 可以使用'三个'运算符  ==、!=、'=~'

备注: 主要专注'最后一个=~'的'ERE'正规表示式

3) 理解: '0'、'1'、'2'状态码的含义

如何读取while中的局部变量  =~引号案例

最佳实践: '正则pattern'用'变量'表示,引用的时候'不要'用"双引号"包括

对比: perl中也有'=~'的正则,不过是'PCRE'风格,用'/pattern/',并且功能更'强'

 

重点: '=~' 涉及 'BASH_REMATCH数组',获取'捕获组'

1) 'BASH_REMATCH[0]'是正则模式匹配的'字符串'

2) 'BASH_REMATCH[n]'是'第n个组()'补获,无法使用'\n'捕获引用

+++++++++++ "其它方式观察BASH_REMATCH"  +++++++++++

for i in "${BASH_REMATCH[@]}";do echo $i;done;

set | grep BASH_REMATCH

案例参考1   案例参考2  ==和!=适用Glob模式规则

意外收获: '=='和'!='只支持'POSIX Glob通配符',非'正则'

正则表达式基础    大佬整理的系列正则表达式   正则引擎与效率

++++++++++ "题外话" ++++++++++

1) 不包含指定字符串所在行,即'过滤','取反'能力 --> ^((?!wzj).)*$

③  find

1) 常用: 查找以".log"结尾的'文件'

find -name "*.log" 

默认: -regextype emacs

特点: 不支持'精确'匹配

2) 细节点

 [1]、-regex'不是'匹配文件名,而是'完整路径'匹配,'类似内含'^和$'

 [2]、如果'-regextype'指定'正则风格',则必须通过'-regex'指定正则的'pattern'

 可选: emacs  posix-awk、posix-basic、 posix-egrep 、 'posix-extended(ERE推荐)'

 [3]、'4.2.24' 版本引入 '-regextype' ; '3.8' 版本引入 '-iregex'

3) 案例: find /home/kiosk -regextype posix-extended -regex '.*wzj-[0-9]+.*'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值