正则表达式,又称正规表达式、常规表达式
使用字符串来描述、匹配一系列符合某个规则的字符串
简单来说,是一种匹配字符串的方法,通过一些特殊符号,实现快速查找、删除、替换某个特定字符串。
正则表达式组成
普通字符:大小写字母、数字、标点符号及一些其他符号
元字符:在正则表达式中具有特殊意义的专用字符
正则表达式的用途
正则表达式对于系统管理员来说是非常重要的,系统运行过程中会产生大量的信息,这些信息有些是非常重要的,有些则仅是告知的信息。身为系统管理员如果直接看这么多的信息数据,无法快速定位到重要的信息,如“用户账号登录失败”“服务启动失败”等信息。这时可以通过正则表达式快速提取“有问题”的信息。如此一来,可以将运维工作变得更加简单、方便。
正则表达式分类
基础正则表达式
扩展正则表达式
Linux中文本处理工具
支持基础正则表达式:grep;sed
支持扩展正则表达式:egrep;awk
基础正则表达式元字符
基础正则表达式是常用的正则表达式部分
除了普通字符外,常见到以下元字符
■ \ :转义字符,\!、 \n等 #让特殊意义的元字符作普通字符使用
■ ^ :匹配字符串开始的位置
例: ^a、 ^the、 ^#
■ $ :匹配字符串结束的位置
例: word$
■ . :匹配除\n之外的任意的一个字符
例: go.d、 g..d
■ * :匹配前面子表达式0次或者多次
例: goo*d、 go.*d
■ [list] :匹配list列表中的一个字符
例: go[ola]d 、[abc]、 [a-z]、 [a-z0-9]
■ [^list] :匹配任意不在list列表中的一个字符
例: [^a-z]、 [^0-9]、 [^A-Z0-9]
■ \{n,m\} :匹配前面的子表达式n到m次,有\{n\}、 \{n,\}、\{n,m\}三种格式
例: go\{2\}d、 go\{2,3\}d、 go\{2,\}d
注意:“o{1,}” 等价于 “o+” ;“o{0,}” 则等价于 “o*”
二、grep 命令
2.1 grep的使用规则:
-n:表示显示行号
-i :表示不区分大小写
-v:表示反向过滤
[ ]:查找集合字符
2.2 用法示例
grep -n 'the' test.txt #文件检索出带‘the’的行并显示行号
grep -vn 'the' test.txt #文件反向检索出不带‘the’的行并显示行号
grep -n 'sh[oi]rt' test.txt #文件检索出带‘short’或‘shirt‘的行并显示行号
grep -n 'oo' test.txt #文件检索出至少带连续oo的行并显示行号
grep -n 'o\{2\}' test.txt #文件检索出至少带连续oo的行并显示行号
grep -n 'o\{2,\}' test.txt #文件检索出至少带连续oo的行并显示行号
grep -n '[^w]oo' test.txt #文件检索出连续oo前面不带w的行并显示行号
grep -n '^[^w]oo' test.txt #文件检索出除w外,任意*oo开头的行并显示行号
grep -n ' [^a-z]oo ' test.txt #文件检索出连续oo前面不是小写字母的行并显示行号
grep -n '[0-9]' test.txt #文件检索出包含数字的行并显示行号
grep -n '[^0-9]' test.txt #文件检索出不包含纯数字的行并显示行号,非纯数字也会匹配
grep -n '[^#]' test.txt #文件检索出不包含#的行并显示行号
grep -n '^the' test.txt #文件检索出以‘the’开头的行并显示行号
grep -n ‘^[a-z] ' test.txt #文件检索出以小写字母开头的行并显示行号
grep -n ‘^[A-Z] ' test.txt #文件检索出以大写字母开头的行并显示行号
grep -n '^[^a-zA-Z]' test.txt #文件检索出不以字母开头的行并显示行号
grep -n '\.$' test.txt #文件检索出以 . 号结尾的行并显示行号
grep -n '^$' test.txt #文件检索出空行并显示行号
grep -n 'w..d' test.txt #文件检索出带有w开头,d结尾,中间两个任意字符的行并显示行号
grep -n 'ooo*' test.txt #文件检索出带有连续oo或两个0以上的行并显示行号
grep -n 'oo*' test.txt #文件检索出带有o或一个0以上的行并显示行号
grep -n 'w.*d' test.txt #文件检索出带有w开头,d结尾,中间任意字符也可中间什么也没有的行并显示行号
grep -n '[0-9][0-9]*' test .txt #文件检索出带有数字的行并显示行号