美文网首页
shell egrep 正则表达式

shell egrep 正则表达式

作者: 豆芽_yw | 来源:发表于2019-04-22 11:08 被阅读0次

名词解释

正则表达式(regular expression, RE)是一种字符模式,用于在查找过程中匹配指定的字符。
在大多数程序里,正则表达式都被置于两个正斜杠之间;例如/l[oO]ve/就是由正斜杠界定的正则表达式,它将匹配被查找的行中任何位置出现的相同模式。在正则表达式中,元字符是最重要的概念。

定义:元字符是这样一类字符,它们表达的是不同于字面本身的含义

基本正则表达式元字符

表达式 含义
^ 行首定位符
$ 行尾定位符
. 匹配单个字符
* 匹配前导符0到多次
.* 匹配任意多个字符
[ ] 匹配指定范围内的一个字符
[ - ] 匹配指定范围内的一个字符,连续的范围
[^] 匹配不在指定范围内的字符
\ 用来转义元字符,褪去特殊含义
\< 词首定位符
\> 词尾定位符
( ) \(..\) 匹配稍后使用的字符的标签
x\{m\} 字符x重复出现m次
x\{m,\} 字符x重复出现m次以上
x\{m,n\} 字符x重复出现m次到n次

拓展正则表达元式字符

表达式 含义
+ 匹配1~n个前导字符
? 匹配0~1个前导字符
a|b 匹配a或b
( ) 组字符

示例 1:

// 查找匹配
#找到love开头的行
[root@localhost ~]# egrep "^love" file

#找到love结尾的行
[root@localhost ~]# egrep "love$" file

#找到l开头,一个任意字符,ve结尾
[root@localhost ~]# egrep "l.ve" file

#l开始,零个或多个o,ve结尾
[root@localhost ~]# egrep "lo*ve" file

#大L 或者小L 开头的  ove
[root@localhost ~]# egrep "[Ll]ove" file

#love最后一个小写字母
[root@localhost ~]# egrep "love[a-z]" file

#love最后一个(不是字母或者数字),而是符号
[root@localhost ~]# egrep "love[^a-zA-Z0-9]" file

示例 2:

// 查找匹配
#找到所有行
[root@localhost ~]# egrep  ".*"  file

#找到空行
[root@localhost ~]# egrep  "^$"  file

#开头一个大写,最后2个任意字符
[root@localhost ~]# egrep  "^[A-Z]..$"  file

#一个大写开头,0到多个小写或空格,3,最后是0-5的一个数字
[root@localhost ~]# egrep  "^[A-Z][a-z ]*3[0-5]"  file

#0到多个小写字母,最后一个点
[root@localhost ~]# egrep  "[a-z]*\."  file

#0到多个空格开头,一个大写,一个小写,再一个小写结尾
[root@localhost ~]# egrep  "^ [A-Z][a-z]*[a-z$]"  file

#0到多个字母开头,非逗号,0到多个英文结尾
[root@localhost ~]# egrep  "[A-Za-z]*[^,][A-Za-z]*"  file

#找到 fourth 单词
[root@localhost ~]# egrep  "\<fourth\>"  file

#找到f开头th结尾的单词
[root@localhost ~]# egrep  "\<f.*th\>"  file

#找到5两次2三次和一个点
[root@localhost ~]# egrep  "5{2}2{3}\."  file

#找到0到多个 ,空格或tab的行
[root@localhost ~]# egrep  "[ \t]*"  file

#找到以#号开头的行
[root@localhost ~]# egrep  "^#"  file

#找到有0到多个,空格或者tab开头的行,的注释行
[root@localhost ~]# egrep  "^[ \t]*#"  file

#过滤掉空行与\#注释的行
[root@localhost ~]# egrep -v "^$|#" file

相关文章

网友评论

      本文标题:shell egrep 正则表达式

      本文链接:https://www.haomeiwen.com/subject/zhvwrqtx.html