1 什么是正则表达式

    简单来说,正则表达式就是为了处理大量的字符串而定义的一套规则和方法

   例如:假设@代表pillow,!代表sleep, 那么ehco ”@!“    ==== "pillowsleep"

   通过定义的这些特殊符号的辅助,系统管理员可以快速过滤,替换或者输出需要的字符串。linux正则表达式一般以行为单位处理的。

 

2 为什么要学习正则表达式

   在Linux运维工作中,时刻都会面对大量带有字符串的文本配置,程序,命令输出及日志文件等,而我们经常会有迫切的需要,从大量的字符串内容中查找符合工作需要的特定的字符串。这就是正则表达式,。因此,可以说正则表达式就是为了过滤这样的字符串的需要而生的!  

   例如:ifconfig的输出取IP,

 

3 注意事项:

     linux在使用正则表达式的时候,注意调整字符集, 不然可能出错  export LC_ALL=C

 

4  字符说明

  1) ^word  匹配以word开头的内容

  2)  word$ 匹配以word结尾的内容

  3) ^$  表示空行

  4).  代表且只能代表一个字符

  5) \  例 \. 只代表点本身,转义符号,让有着特殊身份意义的字符,脱掉马甲,。还原原型。

  6)  *  重复0个或者多个前面的一个字符,例o* 匹配没有o,有1个o 或者多个o

  7)  .*  匹配所有字符。延伸 ^.* 以任意多个字符开头。.*$ 以任意多个字符结尾。

 

1  【abc】  匹配字符集合内任意一个字符【a-zA-Z】匹配所有字母,【0-9】 匹配所有数字

Linux 正则表达式_正则表达式

2  [^abc]  匹配不包含^后的任意一个字符内容。中括号里面的^ 取反,中括号外面的^表示以 ** 开头

Linux 正则表达式_正则表达式_02

 

 

3  a\{n,,m\}  重复n到m次,前一个重复的字符。如果用egrep/sed -r 可以去掉斜线

    a\{n,\} 前一个字符重复至少n次,如果用egrep/sed -r 可以去掉斜线

    a\{n\}  前一个字符重复n次。如果用egrep/sed  -r可以去掉斜线

    a\{,m\} 前一个字符最多重复m次

 

 

 

注意:egrep (grep -E)或sed -r过滤一般特殊字符可以不转义

 

小tip: grep -o  只输出匹配的值,不输出整行内容。