51cto ant linux 正则 字母 gre linux. inb not 特殊
基础正则表达式(Basic Regular Expression)
序号 | 符号 | 描述 | 示例 |
---|---|---|---|
1 | ^ | 匹配以...... 开头的行 | ^ab 匹配以 ab 开头的行 |
2 | $ | 匹配以...... 结尾的行 | ab$ 匹配以 ab 结尾的行 |
3 | ^$ | 匹配空行 | ^$ 匹配空行,不匹配空格 |
4 | . | 匹配任意单个字符 | ab. 匹配 abc 或 abd,不匹配 abcd 或 abde,包括空格 |
5 | \ | 转义符,将特殊符号进行转义 | a\.b 匹配 a.b,不匹配 ajb |
6 | * | 匹配前面项 0 次或多次 | ab * 匹配 a 或 ab 或 abbb |
7 | .* | 匹配任意字符 | ab.* 匹配 ab 或 abc 或 abcd,包括空行 |
8 | [] | 匹配集合以内的任意单个字符 | ab[cd] 匹配 abc 或 abd,不匹配 abj 或 abcd |
9 | [^] | 匹配集合以外的任意单个字符 | ab[^cd] 匹配 abe 或 abj,不匹配 abc 或 abd |
数据模拟
匹配以...... 开头的行
[root@linux-node1 ~]# vim linbin.txt
I am oldboy teacher!
I teach linux.
I like badminton ball,billard ball and chinese chess.
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000488.
not 4900000448.
my god,i am not oldbey,but OLDBOY
oldb y
匹配以...... 结尾的行
[root@linux-node1 ~]# grep "^m" linbin.txt
my blog is http://oldboy.blog.51cto.com
my qq num is 49000488.
my god,i am not oldbey,but OLDBOY
匹配空行
[root@linux-node1 ~]# grep "m$" linbin.txt
my blog is http://oldboy.blog.51cto.com
匹配任意单个字符
[root@linux-node1 ~]# grep -vn "^$" linbin.txt
1:I am oldboy teacher!
2:I teach linux.
4:I like badminton ball,billard ball and chinese chess.
6:my blog is http://oldboy.blog.51cto.com
7:our site is http://www.etiantian.org
9:my qq num is 49000488.
11:not 4900000448.
12:my god,i am not oldbey,but OLDBOY
13:oldb y
转义符
[root@linux-node1 ~]# grep "." linbin.txt ## 不匹配空行
I am oldboy teacher!
I teach linux.
I like badminton ball,billard ball and chinese chess.
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000488.
not 4900000448.
my god,i am not oldbey,but OLDBOY
oldb y
[root@linux-node1 ~]# grep "oldb.y" linbin.txt
I am oldboy teacher!
my blog is http://oldboy.blog.51cto.com
my god,i am not oldbey,but OLDBOY
oldb y
匹配前面项 0 次或多次
[root@linux-node1 ~]# grep "\.$" linbin.txt
I teach linux.
I like badminton ball,billard ball and chinese chess.
my qq num is 49000488.
not 4900000448.
匹配任意字符
[root@linux-node1 ~]# grep "0*" linbin.txt
I am oldboy teacher!
I teach linux.
I like badminton ball,billard ball and chinese chess.
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000488.
not 4900000448.
my god,i am not oldbey,but OLDBOY
oldb y
[root@linux-node1 ~]# grep -o "0*" linbin.txt ## 精确匹配字符串
000
00000
匹配集合以内的任意单个字符
[root@linux-node1 ~]# grep ".*" linbin.txt ## 匹配空行
I am oldboy teacher!
I teach linux.
I like badminton ball,billard ball and chinese chess.
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000488.
not 4900000448.
my god,i am not oldbey,but OLDBOY
oldb y
匹配集合以外的任意单个字符
[root@linux-node1 ~]# grep "[abc]" linbin.txt
I am oldboy teacher!
I teach linux.
I like badminton ball,billard ball and chinese chess.
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my god,i am not oldbey,but OLDBOY
oldb y
[root@linux-node1 ~]# grep "[0-9]" lb.txt
my blog is http://oldboy.blog.51cto.com
my qq num is 49000488.
not 4900000448.ss
扩展正则表达式(Extended Regular Expression)
[root@linux-node1 ~]# grep "[^a-z]" linbin.txt ## 匹配非小写字母
I am oldboy teacher!
I teach linux.
I like badminton ball,billard ball and chinese chess.
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000488.
not 4900000448.
my god,i am not oldbey,but OLDBOY
oldb y
[root@linux-node1 ~]# grep "[^A-Z]" linbin.txt ## 匹配非大写字母
I am oldboy teacher!
I teach linux.
I like badminton ball,billard ball and chinese chess.
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000488.
not 4900000448.
my god,i am not oldbey,but OLDBOY
oldb y
[root@linux-node1 ~]# grep "[^0-9]" linbin.txt ## 匹配非数字
I am oldboy teacher!
I teach linux.
I like badminton ball,billard ball and chinese chess.
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000488.
not 4900000448.
my god,i am not oldbey,but OLDBOY
oldb y
序号 | 符号 | 描述 | 示例 | |
---|---|---|---|---|
1 | + | 匹配前面项 1 次或多次 | ab + 匹配 ab 或 abb,不匹配 a | |
2 | ? | 匹配前面项 0 次或 1 次 | ab? 匹配 a 或 ab,不匹配 abb | |
3 | 匹配 | 两边的任意一项 | ab | cd 匹配 ab 或 cd |
4 | () | 匹配表达式 | a(c | d)e 匹配 ace 或 ade,不匹配 ae |
5 | {n,m} | 匹配前面项 n~m 次 | ab{2,3} 匹配 abb 或 abbb,需要对 {} 进行转义 | |
6 | {n,} | 匹配前面项至少 n 次,包含 n 次 | ab{2,} 匹配 abb 或 abbb,需要对 {} 进行转义 | |
7 | {n} | 匹配前面项 n 次 | ab{2} 匹配 abb,需要对 {} 进行转义 | |
8 | {,m} | 匹配前面项最多 m 次,包含 m 次 | ab{,2} 匹配 a 或 ab 或 abb,需要对 {} 进行转义 |
数据模拟
匹配前面项 1 次或多次
[root@linux-node1 ~]# vim linbin.txt
I am oldboy teacher!
I teach linux.
I like badminton ball,billard ball and chinese chess.
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000488.
not 4900000448.
my god,i am not oldbey,but OLDBOY
good
goood
gd
匹配前面项 0 次或 1 次
[root@linux-node1 ~]# grep -E "go+d" linbin.txt
my god,i am not oldbey,but OLDBOY
good
goood
匹配 | 两边的任意一项
[root@linux-node1 ~]# grep -E "go?d" linbin.txt
my god,i am not oldbey,but OLDBOY
gd
匹配表达式
[root@linux-node1 ~]# grep -E "god|good" linbin.txt
my god,i am not oldbey,but OLDBOY
good
匹配前面项 n~m 次
[root@linux-node1 ~]# grep -E "g(la|oo)d" linbin.txt
good
[root@linux-node1 ~]# egrep "g(la|oo)d" linbin.txt
good
[root@linux-node1 ~]# egrep "g(oo)?d" linbin.txt
good
gd
匹配前面项至少 n 次
[root@linux-node1 ~]# grep -E "0{3,5}" linbin.txt
my qq num is 49000488.
not 4900000448.
匹配前面项 n 次
[root@linux-node1 ~]# grep -E "0{3,}" linbin.txt
my qq num is 49000488.
not 4900000448.
Linux 正则表达式
[root@linux-node1 ~]# grep -E "0{3}" linbin.txt
my qq num is 49000488.
not 4900000448.
来源: http://www.bubuko.com/infodetail-2484417.html