为处理大量的字符串而定义的一套规则和方法
1)linux正则表达式以行为单位处理
2)alians grep = “grep –color=auto”,让匹配的内容显示颜色
3)注意字符集,export LC_ALL=C
[root@pyrene ~]# alias grep='grep --color=auto'
[root@pyrene ~]# export LC_ALL=C
[root@pyrene ~]# echo $LC_ALL --检查字符集是否正确
C
一、正则表达式第一波字符说明
1)^word 匹配word开头的内容 vim里面的^代表一行的开头
[root@pyrene ~]# grep "^m" oldboy.log
my blog is http://www.cnblogs.com
my qq is 3110436742
my god ,i am not p but pyrene
2)word$ 匹配以word结尾的内容, vim里面的$代表一行的结尾
[root@pyrene ~]# grep "m$" oldboy.log
my blog is http://www.cnblogs.com
3)^$ 代表空行
[root@pyrene ~]# grep -n "^$" oldboy.log 这里-n显示行号
3:
7:
二、基础正则表达式第二波字符说明
4). 代表且只能表示任意一个字符
5) 转移符号,让有特殊身份意义的字符脱掉马甲
6)* 重复0个或者多个前面的一个字符
7).* 匹配所有字符
[root@pyrene ~]# grep -n "." oldboy.log
1:i am pyrene and
2:i like linux
4:i like badminton ball . billiard ball and chinese chess!
5:my blog is http://www.cnblogs.com
6:my qq is 3110436742
8:my god ,i am not p but pyrene
[root@pyrene ~]# grep -n ".*" oldboy.log
1:i am pyrene and
2:i like linux
3:
4:i like badminton ball . billiard ball and chinese chess!
5:my blog is http://www.cnblogs.com
6:my qq is 3110436742
7:
8:my god ,i am not p but pyrene
三、第三波正则字符说明
8)[abc] 匹配字符集合内任意一个祖父[a-zA-Z],[0-9]
9)[^abc] 匹配不包含^后的任意一个字符的内容
中括号里的^为取反,注意和中括号外面的以…开头的区别
[root@pyrene ~]# grep "[abc]" oldboy.log
i am pyrene and
i like badminton ball . billiard ball and chinese chess!
my blog is http://www.cnblogs.com
my god ,i am not p but pyrene
[root@pyrene ~]# grep "[^abc]" oldboy.log
i am pyrene and
i like linux
i like badminton ball . billiard ball and chinese chess!
my blog is http://www.cnblogs.com
my qq is 3110436742
my god ,i am not p but pyrene
10) a{n,m} 重复a n到m次,前一个重复的字符,如果要用egrep /sed –r可以去掉斜线
a[n,] 重复a至少n次前一个重复的字符
a{n} 重复a n次
a{,m}????
注意egrep或者sed –r过滤一般特殊字符可以不转义
[root@pyrene ~]# grep "0{0,}" oldboy.log
i am pyrene and
i like linux
i like badminton ball . billiard ball and chinese chess!
my blog is http://www.cnblogs.com
my qq is 3110436742
my god ,i am not p but pyrene
扩展正则表达式
1)+ 表示重复一个或一个以上前面的字符
[root@pyrene ~]# grep -E "go+d" oldboy.log
my god ,i am not p but pyrene
2)? 表示重复0个或者1个前面的字符
3)| 表示同时过滤多个字符串
[root@pyrene ~]# egrep "3306|1521" /etc/services
mysql 3306/tcp # MySQL
mysql 3306/udp # MySQL
ncube-lm 1521/tcp # nCube License Manager
ncube-lm 1521/udp # nCube License Manager
4)() 后向引用,分组过滤