目录

一、正则表达式的介绍

1)正则表达式的组成

2)正则表达式和通配符的区别 

二、基础正则表达式

1)转义字符的运用

将特殊含义的字符转换为普通字符的含义

将普通字符转换为特殊作用的字符

2)基础正则表达式实际应用

查看以xxx为开头  和查看以xxx为结尾的文件内容

匹配单个任意字符或者多个任意字符

匹配列表内容和匹配非列表中的内容

对子表达式进行多次或者限定次数的匹配 

三、拓展正则表达式

1)拓展正则表达式的基本用法 

2)拓展正则表达式的实际运用

四、正则表达式的组合筛查运用

1)按要求匹配输出规定的电话号码

2)按照要求匹配出规定格式的邮箱


一、正则表达式的介绍

1)正则表达式的组成

正则表达式是由普通字符与元字符组成:

  • 普通字符 包括大小写字母、数字、标点符号及一些其他符号

  • 元字符 是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符或表达式)在目标对象中的出现模式

2)正则表达式和通配符的区别 

通配符:在Linux中,一般配合find命令用于对文件目录文件名的查找

正则表达式:匹配文件内容,用于精确筛选信息,可以配合grep,egrep,awk,sed命令进行搭配使用,查找时,也比通配符更加精确

二、基础正则表达式

适合awk,sed,grep,egrep等文本工具使用

注意:egrep、 awk使用{n}、{n,}、{n, m}匹配时 "{ }" 前不用加" \ " 

1)转义字符的运用

将特殊含义的字符转换为普通字符的含义

将普通字符转换为特殊作用的字符

2)基础正则表达式实际应用

查看以xxx为开头  和查看以xxx为结尾的文件内容

[root@localhost tr]#grep '^1' math.txt
 
[root@localhost tr]#grep '3$' math.txt 

Shell脚本之正则表达式-LMLPHP

匹配单个任意字符或者多个任意字符

[root@localhost tr]#grep 'g.d' english.txt 
 
[root@localhost tr]#grep 'g.*d' english.txt 

Shell脚本之正则表达式-LMLPHP

匹配列表内容和匹配非列表中的内容

[root@localhost tr]#head -n10 /etc/passwd |grep '[root]'
 
[root@localhost tr]#head -n10 /etc/passwd |grep '[^root]'

Shell脚本之正则表达式-LMLPHP

对子表达式进行多次或者限定次数的匹配 

[root@localhost tr]#grep "go\{1\}" english.txt 

[root@localhost tr]#egrep "go{2,}"  english.txt 

[root@localhost tr]#egrep "go{5,8}"  english.txt 

Shell脚本之正则表达式-LMLPHP

三、拓展正则表达式

1)拓展正则表达式的基本用法 

支持awk和egrep使用,如果grep和sed想要正常使用(grep -E  sed -r)

2)拓展正则表达式的实际运用

[root@localhost tr]#egrep 'go+d'  english.txt 
 
[root@localhost tr]#egrep 'go?d'  english.txt 
 
[root@localhost tr]#egrep '(good)'  english.txt 
 
[root@localhost tr]#egrep 'good|fgod'  english.txt 

Shell脚本之正则表达式-LMLPHP

四、正则表达式的组合筛查运用

1)按要求匹配输出规定的电话号码

 匹配要求:

  1. 匹配 025 开头的区号
  2. 区号与后面的号码以"-"或则空格或则没有
  3. 电话号码要5 或者 8开头的八位数
[root@localhost ~]#egrep "^(025)[- ]?[58][0-9]{7}$" phone.txt 

Shell脚本之正则表达式-LMLPHP

2)按照要求匹配出规定格式的邮箱

匹配要求:

  1. 用户名@的长度为6-18位,任意大小写的英文字母,任意数字,除了@和空格以外的任意符号,开头只能是_或者英文字母
  2. 子域名(二级域):任意长度,符号只能使用"-"或者"_"或者"."
  3. 顶级域:长度位2-5,任意大小写的英文
[root@localhost ~]# cat 2.txt | grep -P "^[\w\D][^@ ]{5,17}[@][\w-\.]+[\.][\w\D]{2,5}$"

Shell脚本之正则表达式-LMLPHP

05-11 22:04