正则表达式的使用
一、概念
用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。
简单来说,正则表达式是用特地的字符检索文件中的字符
在正则表达式中,我们把用于匹配的特殊符号又称作元字符。在shell中,元字 符又分为基础元字符(BRE)和扩展元字符(ERE)。
基础元字符
元字符 作 用
*匹配前面的字符或字表达0次或任意多次
.配除换行符和回车符(“\n”和"\r")外的任意一个字符。
.*表示匹配任意长度字符串
^匹配行首。例如,hello 会匹配以 hello 开头的行。
匹
配
行
尾
。
例
如
,
h
e
l
l
o
匹配行尾。例如,hello
匹配行尾。例如,hello 会匹配以 hello 结尾的行
^$匹配空行
[]配中括号中指定的任意一个字符,而且只匹配一个字符。例如[aoeiu]匹配任意一个元音字母, [0-9] 匹配任意一位数字
[^]匹配除括号中的字符以为的字符,取反的意思
\转义符
\ { n \ }表示前面的字符出现了n次,重复前面的字符显示
\ { n ,\ }表示前面的字符至少出现了n次,重复前面的字符显示
\ {n,m \ } 表示其前面的字符至少出现 n 次,最多出现 m 次
\ < \ >牟定
扩展元字符
+匹配前面的一个字符或子表达式1次或任意多次。
?匹配前面的一个字符或子表达式零次或一次。例如:如 “colou?r” 可以匹配 “colour” 或 “color
|表示或
()将括号内容看做整体
举例: 1、"":前一个字符匹配0次或任意多次
注意,"“和通配符中的”"含义不同,它代表前一个字符重复 0 次或任意多次。比如,"a"并不是匹配"a"后面的任意字符,而是可以匹配所有内容,包括空白行。我们试试:
显示sshd_config文件中有效的配置项
egrep -v “#|KaTeX parse error: Expected group after '^' at position 40: …grep -E -v "^̲#|^” /etc/ssh/sshd_config
过滤IP地址
IP地址从0-255之间,要把0-255拆分成0-99,100-199,200-249,250-255,然后在分别过滤出4段就出来了。正则表达式书写如下所示:
egrep '<(25[0-5]|[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})(.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})){3}>'路径
过滤手机号
egrep 1[35-9][0-9]{9} l路径