目录
一、正则表达式
1、什么是正则表达式
2、元字符
3、扩展正则表达式元字符
二、grep
一、正则表达式
1、什么是正则表达式
REGEXP: Regular Expressions,由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能,但与通配符不同,通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符。
正则表达式被很多程序和开发语言所广泛支持:vim, less,grep,sed,awk, nginx,mysql 等
- 正则表达式,又称正规表达式、常规表达式
- 使用字符串来描述、匹配一系列符合某个规则的字符串
正则表达式组成
- 普通字符包括大小写字母、数字、标点符号及一些其他符号。
- 元字符是指在正则表达式中具有特殊意义的专用字符
可以使用
man 7 regex
可以使用man手册帮助
2、元字符
--- 基础正则表达式常见元字符
(支持的工具:grep、egrep、sed、awk)
字符 | 作用 |
---|---|
\ | 转义,把一些特殊的符号转换成普通的符号字符,还可以把一些普通字符转换成特殊功能,例:\!、\n、\$等 |
^ | 表示匹配字符串开始的位置,匹配行首,例: ^a、 ^# |
$ | 表示匹配字符串末尾的位置,匹配行尾,例: word$、 #$ ;^$表示空行 |
. | 匹配任意的单个字符,例: go.d、g..d |
* | 匹配前面子表达式0次或者多次,贪婪模式所以尽可能长,例: goo*d、go.*d |
.* | 表示任意长度的任一字符,不包括0次 |
\? | 匹配其前面字符0或1次,可有可无 |
\+ | 匹配其前面字符最少1次,有且大于等于1次 |
\{n\} | 匹配前面的子表达式n次,例:mo\{2\}y、'[0-9]\{ 2\ }'匹配两位及两位以上数字 |
\{n,\} | 匹配前面的子表达式不少于n次,例: mo\{2,\}y、'[0-9]\{2,\}'匹配两位及两位以上数字 |
\{,n\} | 匹配前面的子表达式不多于n次 |
\{n,m\} | 匹配前面的子表达式n到m次(m>=n),例: mo\{2,3\}y、'[0-9]\{2,3\}'匹配两位到三位数字 |
注: egrep(grep-E)、awk使用{n }、{n, }、{n,m}匹配时"{}”前不用加"\" | |
\w | 匹配包括下划线的任何单词字符 |
\W | 匹配任何非单词字符。等价于"[^A-Za-z0-9_]"。 |
\d | 匹配一个数字字符 |
\D | 匹配一个非数字字符。等价于[^0-9]。 |
\s | 空白符 |
[:alpha:] | 字母,即A-Z,a-z |
[:alnum:] | 字母和数字 |
[:lower:] | 小写字母,即a-z |
[:upper:] | 大写字母,即A-Z |
[:blank:] | 空白字符(空格和制表符) |
[:space:] | 包括空格、制表符、换行符、回车符等各类型空白 |
[:print:] | 可打印字符 |
[:punct:] | 标点符号 |
3、扩展正则表达式元字符
grep -E
字符 | 作用 |
---|---|
+ | 表示匹配前面的子表达式1次以上 |
? | 表示匹配前面的子表达式0或者1次 |
( ) | 将括号里的内容看成一个整体 |
| | 以或的方式匹配字符串 |
二、grep
格式:
grep [选项]… 查找条件 目标文件
选项:
选项 | 功能 |
-color=auto | 对匹配到的文本着色显示 |
-m # | 匹配到#次后停止;匹配到#行后停止 |
-v | 显示没有被匹配到的行,即取反 |
-i | 忽略字符大小写 |
-n | 显示匹配到的行号 |
-c | 统计匹配到的行数 |
-o | 仅显示匹配到的字符串 |
-q | 静默模式,不输出任何信息 |
-A # | 匹配到的行后#行也显示出来 |
-B # | 匹配到的行前#行也显示出来 |
-C # | 匹配到的行前后各#行也显示出来 |
-e | 实现多个选项间的逻辑or关系 |
-w | 匹配整个单词 |
-E | 扩展正则表达式,相当于egrep |
-F | 不支持正则表达式,相当于fgrep |
-f | file根据模式文件,处理两个文件相同内容,把第一个文件作为匹配条件 |
-r | 递归目录,但不处理软链接 |
-R | 递归目录,处理软链接 |
实例:
1、统计当前主机的连接状态
2、统计当前连接的主机数