Linux 正则表达式

注意: 1.linux 正则表达式一般以行为单位处理的 2.alias grep='grep --color=auto',让匹配的内容显示颜色 3.注意字符集,export LCC_ALL=C 一:什么是正则表达式? 简单的说,正则表达式就是为处理大量的字符串而定义的一套规则的方法,例如:假设“@”代表ysg,“!”代表ing。echo "@!"=="ysging" 作用为:通过定义的这些特殊符号的辅助,系统管理员就可以快速过滤,替换或输出需要的字符串。linux正则表达式一般以行为单位处理的。 二:为什么要学会正则表达式? 在企业工作中,我们每天做的linux运维工作中,时刻都会面对大量带有字符串的文本配置、程序、命令输出及日志文件等,而我们经常会有迫切的需要,从大量的字符串内容中查找符合工作需要的特定的字符串,这就要靠正则表达式。因此,可以说正则表达式就是为过滤这样的字符串而生的。 三:容易混淆的两个注意事项: a.正则表达式应用非常广泛,存在于各种语音中,例如:php、python、java等。但是,这里说的是linux系统运维工作中的正则表达式,即linux正则表达式,最常应用正则表达式的命令就是grep(egrep)、sed、awk,换句话说linux三剑客要想能工作的更高效,那一定离不开正则表达式配合的。 b.正则表达式和我们常用的通配符特殊字符是有本质区别的,这一点要注意。比如:通配符中,ls .log 这里的 就是通配符(表示所有),不是正则表达式。 要做的准备: alias grep='grep --color=auto' export LC_ALL=C 案例一: ^ 与 $ 的使用,注意是区分大小写的。

正则表达式 说明
.^I 匹配以 I 开头的内容。vi/vim编辑器里 ^ 代表一行的开头
x$ 匹配以 x 结尾的内容。vi/vim编辑器里 $ 代表一行的结尾
^$ 可以理解为以结尾为开头的意思,即空行

案例二:

正则表达式 说明
. 代表且只能代表任意一个字符
\ 转义符号
* 重复0个或多个前面的一个字符
.* 匹配所有字符
^.* 以任意字符开头
.*$ 以任意字符结尾

点(.)的含义小结 1.当前目录 2.是的文件生效相当于source 3.隐藏文件 4.任意一个字符(grep 正则) grep中的两个参数 -i -o :-i 表示过滤出的内容不区分大小写,-o 表示只显示过滤出的字符。 案例三:

正则表达式 说明
[abc] 匹配字符集合内的任意一个字符 [a-zA-Z] ,[0-9]
[^abc] 匹配不包含^后 任意一个字符的内容
a{n,m} 重复 n 到 m 次,前一个重复的字符。如果用egrep/sed -r 可以去掉斜线
a{n,} 重复至少 n 次,前一个重复的字符。如果用egrep/sed -r 可以去掉斜线
a{n} 重复 n 次,前一个重复的字符。如果用egrep/sed -r 可以去掉斜线
a{,m} 重复最多 m 次,前一个重复的字符。如果用egrep/sed -r 可以去掉斜线