L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

正则表达式:简单的说,正则表达式就是一套处理字符串的规则和方法,一般来说以行为单位对字符串进行处理,通过特殊的符号辅助,可以快速的过滤替换我们需要的某些字符串。

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

正则表达式实际上就是一种特殊字符,赋予了它特定的含义:

1)^word:搜索以word开头的。

2)word$:搜索以world结尾的。

3). 代表且只能代表任意一个字符。下图是例子:

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

grep -i:-i不区分大小写。

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

4)\ :转义符号,让有着特殊身份意义的字符,脱掉马甲,还原原型。

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

5)* :表示重复0个或多个前面的一个字符。例子:o*:表示无限个o。

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

6).*:匹配所有字符,^.*:以所有字符开头的。

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

7)[]:字符集和的重复特殊字符的符号。

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

上图中符合结果的组合形式是blog或者boog。

8)[^qq]:匹配了非^后的内容的所有内容。

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

9)a\{n,m\}:重复n—m次前一个重复的字符。

a\{,m\}:重复至多m次前一个重复的字符。但可以没有。

\{n,\}:重复至少n次前一个重复的字符。

\{n\}重复n次前一个重复的字符。

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

关于m,n以及{}的使用说明:

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

扩展的正则表达式:

1)+:重复一个或多个以上前面的字符。

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

2)?:重复零个或一个0(相对于例子中的"490\{0\}448"来说。)前面的字符。

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

3)|用或的方法查找多个符合的字符串。

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

4)()找出“用户组”字符串。

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

题:要求取出ifconfig eth0的addr的10.0.0.7。

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

注意:

awk -F "[ ]":其中的[ ]可以表示多个间隔符。

awk语句中的"+"的作用可以简化空格,比如十几个空格就可以压缩到一个。

案例:

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

下图的例子有点难度:

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

其中的\1的意思是调用前面()内的内容。关于\2,\3的使用方法:

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

案例:

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战

案例:

L013-老男孩Linux高端运维课程-linux正则表达式及重点命令手把手实战