正则表达式
正则表达式的作用:方便我们在文件中快速查找/过滤到内容
正则表达式分类:
- 基础正则 (Basic RE BRE)
- 扩展正则(Extended RE ERE)
通配符与正则的区别
- 通配符:方便我们进行查找文件 (Linux下大部分命令支持)
- 正则:方便我们进行查找/过滤文件里的内容 (Linux三剑客,开发语言)
基础正则
尖角符号^
:以什么开头的行
####查找以I开头的行
[root@yiqilang ~]# grep '^I' /oldboy/oldboy.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
美元符号$
:以什么结尾的行
####查找以m结尾的行
[root@yiqilang ~]# grep 'm$' /oldboy/oldboy.txt
my blog is http://oldboy.blog.51cto.com
our size is$ http://blog.oldboyedu.com
- 尖角+美元符号
^$
: 空行,这一行什么都没有
####查找文件的空行
[root@yiqilang ~]# grep '^$' /oldboy/oldboy.txt -n
3:
为了看起来直观,使用了参数-n,显示行号
不过^$
多用来排除空行的
点符号.
:任意一个字符(单个)
查找m后面任意一个字符,空格也算一个字符
星号*
:前一个字符连续出现0次或多次
点加星号.*
:所有任意字符
过滤以I开头,后面是所有任意字符
撬棍符号\
:转义符号或去掉符号的原有特殊含义
转义字符:\n=回车键 \t=按下tab键
echo -e 让echo命令支持转义字符
中括号[]
:相当于是一个字符(每次匹配1个字符)
相当于查找u或r的行,是每次单个匹配
[^]
:取反/排除
相当于排除abcd字符,过滤出不包含abcd字符的内容
扩展正则
grep命令要使用扩展正则需要使用参数:-E或直接使用egrep
加号+
:前一个字符连续出现1次或多次
第一条命令是4连续出现1次或多次
第二条命令是4后面加号前面的4连续出现1次或多次,所以第二条命令不会过滤单个4开头的内容
+
和[]
通常一起使用
匹配4或4连续出现1次或多次
管道|
:或者(在正则中表示)
相当于过滤出4或者a 字符
小括号()
:被括起来的内容相当于一个整体
反向引用/后向引用
相当于过滤包含oldboy或oldbey的字符串
花括号{}
:连续出现指定次数
0{n,m} n表示最少连续匹配多少次 m表示最多连续匹配多少次.
{n,} n表示至少连续匹配n次,至多没有限制
{n} n表示指定匹配
问号?
:前一个字符出现0次或1次
?前面一个字符出现0次或者1次.
相当于匹配8这个符号出现0次或1次,单个匹配