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'状态码的含义

linux哪些地方用到了正则_第1张图片

linux哪些地方用到了正则_第2张图片

如何读取while中的局部变量

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

linux哪些地方用到了正则_第3张图片

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

 linux哪些地方用到了正则_第4张图片

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

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

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

linux哪些地方用到了正则_第5张图片

linux哪些地方用到了正则_第6张图片

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

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

set | grep BASH_REMATCH

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

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

linux哪些地方用到了正则_第7张图片

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

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

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

③  find

linux哪些地方用到了正则_第8张图片

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]+.*'

你可能感兴趣的:(linux,运维,正则表达式)