目录
一、正则表达式的概括
常用选项
基础正则表达式
查看以xxx为开头 查看以xxx为结尾的文件内容
匹配单个或多个字符
匹配中括号里的内容
对子表达式进行多次或者限定次数的匹配
拓展正则表达式的基本用法
扩展元字符
+ 匹配+前面的字符或表达式至少1次(大于等于1次{1,})
? 匹配?前面的字符或表达式0次或1次({0,1})
() 将()里面的表达式作为一个整体
| 以或的方式匹配字符串
一、正则表达式的概括
正则表达式是由普通字符与元字符组成:
- 普通字符 包括大小写字母、数字、标点符号及一些其他符号
- 元字符 是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符或表达式)在目标对象中的出现模式
- 元字符是指在正则表达式中具有特殊意义的专用字符,可以用来规定其前导字符(即位于元字符前面的字符或表达式)在目标对象中的出现模式.
通配符:作用范围 匹配文件/目录名
正则表达式:匹配文件内容,用于精确筛选信息,可以配合grep,egrep,awk,sed命令进行搭配使用,查找时,也比通配符更加精确
常用选项
基础正则表达式
(支持的工具:grep、egrep、sed、awk)
查看以xxx为开头 查看以xxx为结尾的文件内容
[root@localhost ~]# grep '^1' zzz.txt #过滤出1开头的
[root@localhost ~]# grep '3$' zzz.txt #过滤出3结尾的
匹配单个或多个字符
[root@localhost ~]# grep 'q.e' 1.sh #. 代表除了\n意外的任意字符
[root@localhost ~]# grep 'q.*e' 1.sh #.* 匹配任意字符大于等于0次(这里代表q任意字符任意长度e)
匹配中括号里的内容
[xxx]匹配中括号里的列表中的任意一个字符
[xxx]*匹配中括号里的列表中任意字符大于等于0次
[root@localhost ~]# grep "1[2]" 5.sh
[root@localhost ~]# grep "1[1234567890]" 5.sh
[^xxx]匹配除了中括号里的列表中的任意一个字符
[^0-9]匹配所有非数字的字符
[^a-zA-Z]匹配所有非大小写字母的字符
[root@localhost ~]# grep "[^24680]" 5.sh #匹配除了中括号里的列表中的任意一个字符
对子表达式进行多次或者限定次数的匹配
\{n\}匹配{n}前面的字符或表达式 n 次;grep必须加\;egrep不用加\.
使用grep必须使用两个\\
[root@localhost ~]# grep "go\{2\}d" 5.sh
[root@localhost ~]# grep "go[ola]\{2\}d" 5.sh
\{n,\}匹配{n}前面的字符或表达式至少 n 次(>=n次)
\{n,m\} 匹配{n}前面的字符或表达式 n至m 次(大于等于n次且小于等于m次)
grep必须加\;egrep不用加\.
[root@localhost ~]# grep "go\{2,\}d" 5.sh #最少匹配两次,包含两次
[root@localhost ~]# grep "go\{2,4\}d" 5.sh #至少匹配两次,最多四次
拓展正则表达式的基本用法
支持awk和egrep使用,如果grep和sed想要正常使用(grep -E sed -r)
元字符 | 作用含义 |
+ | 匹配前面子表达式1次及以上 |
? | 匹配前面子表达式0次或者1次 |
() | 将括号中的字符串作为一个整体 |
| | 以"或"的方式匹配字符串 |
使用egrep不用加反斜杠;egrep等于grep -E
\w :匹配包括下划线的任何单词字符。
\W :匹配任何非单词字符。等价于“[^A-Za-z0-9_]”。
grep需搭配-P使用
[root@localhost ~]# grep -P "go\wd" 5.sh
\d :匹配一个数字字符。
\D :匹配一个非数字字符。等价于 [^0-9]。
grep需搭配-P使用
\s :空白符。
\S :非空白符
grep需搭配-P使用
[root@localhost ~]# grep -P "go\Sd" 5.sh
扩展元字符
(支持的工具:egrep、awk )grep -E sed -r
+ 匹配+前面的字符或表达式至少1次(大于等于1次{1,})
[root@localhost ~]# grep -E "go+d" 5.sh
[root@localhost ~]# grep -E "go{1,}d" 5.sh
? 匹配?前面的字符或表达式0次或1次({0,1})
[root@localhost ~]# grep -E "goo?d" 5.sh
[root@localhost ~]# grep -E "goo{0,1}d" 5.sh
() 将()里面的表达式作为一个整体
[root@localhost ~]# grep -E "g(oo)*d" 5.sh
| 以或的方式匹配字符串
[root@localhost ~]# grep -E "g(oa|ol|la|oo)d" 5.sh