您的位置:首页 > 运维架构 > Linux

linux正则表达式

2016-03-16 21:04 267 查看
1、什么事正则表达式?
简单的说,正则表达式就是为处理大量的字符串而定义的一套规则和方法,
例如:假设“@”代表hello,“!”代表bye。echo "@!" =="hellobye"
通过定义的这些特殊符号的辅助,系统管理员就可以快速过滤,替换或输出需要的字符串。
linux正则表达式一般是已行为单位处理的。
正则表达式:
1)linux正则表达式(是适合三剑客的正则grep,awk,sed)
2)PHP,JAVA,PERL,PYTHON(Perl兼容正则表达式)都有自己的正则表达式

2、为什么要学会正则表达式?
在企业工作中,我们每天做的linux运维工作中,时刻都会面对大量带有字符串的文本配置、程序、命令输出及日志文件等,而我们经常会迫切的需要,从大量的字符串内容中查找符合工作需要的特定的字符串。这就要靠正则表达式。因此可以说正则表达式就是为过滤这样字符串的需求而生的。
例如:ifconfig的输出取IP,例如 cat /var/log/messages输出等。

3、容易混淆的两个注意事项:
a,正则表达式应用非常广泛吗,存在于各个语言中,例如:php,python,java等。但是,我们今天讲的是linux系统运维工作中的正则表达式,即linux正则表达式,最常应用正则表达式的命令就是grep(egrep),sed,awk,换句话说linux三剑客想要能工作的更高效,那一定离不开正则表达式的配合。
b,正则表达式和我们常用的通配符特殊字符是有本质区别的,这一点要注意。
通配符例子: ls *.log 这里的*就是通配符(表示所有),不是正则表达式。
注意事项:
a.linux正则表达式一般是以行为单位匹配处理的
b.alias grep=“grep--color=auto”,这里是以grep为例。
c.注意字符集,LC_ALL=C
我们想要玩好三剑客,首先就要掌握正则表达式。
linux里正则表达式。主要是awk,sed,grep(egrep)三剑客的正则表达式。

4、基础正则表达式:元字符意义BRE
正则表达式实际就是一些特殊字符,赋予了他特定的含义。
1)^word 搜索以word开头的。vi ^一行的开头。
2)word$ 搜索以word结尾的。vi $一行的结尾。
3)^$ 表示空行
4). 代表且只能代表任意一个字符
5)\ 例\.只代表点本身,转义符号,让有着特殊身份意义的字符,脱掉马甲,还原原型。
6)* 例o* 重复0个或多个前面的一个字符。
7).* 匹配所有字符。^.*以任意多个字符开头。.*$以任意多个字符结尾
8)[abc] 匹配字符集合内的任意一个字符[a-zA-Z],[0-9]
9)[^abc] 匹配不包含^后的任意字符的内容。
10)a\{n,m\} 重复n到M次,前一个重复的字符。如果用egrep/sed -r可以去掉斜线
\{n,\} 重复至少n次,前一个重复的字符。如果用egrep/sed -r 可以去掉斜线
\{n\} 重复n次,前一个重复的字符。如果用egrep/sed -r 可以去掉斜线
\{,m\} 重复最多M次,前一个重复的字符。如果用egrep/sed -r 可以去掉斜线
注意:egrep或sed -r过滤一般特殊字符可以不转义。

5、扩展的正则表达式:ERE(egrep或grep -E)
1)+ 重复一个或一个以上前面的字符。
2)?重复0个或者一个0前面的字符。
3)| 用或的方式查找多个符合的字符串
4)() 找出“用户组”字符串。
5)man bash
man grep
6)\b 匹配单词的边界
\w匹配任意一个字符和数字
\W匹配非字符和数字

6、
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux 系统 特殊符号