十七、正则表达式
一、正则表达式,通过正则表达式提供的特殊字符生成一个匹配字符串的公式,从海量的数据中筛选出需要的数据
常见的命令只有grep、sed、awk支持正则表达式
二、特殊字符:
^ :锚定开头 ^a 以a开头,默认锚定一个字符
$ :锚定结尾 a$ 以a结尾,默认锚定一个字符
技巧:单一使用 ,锚定开头或结尾,是模糊匹配;两者一起使用,属于精确匹配。
egrep "^a" file 以a开头的字符串 egrep "a$" file 以a结尾的字符串 egrep "^ac$ " file 以a开头c结尾,两个字符
. :匹配除回车以外的任意字符
() :字符串分组
[] :定义字符类,匹配括号内的一个字符
[ ^ ] :否定括号内出现的字符类,取反
\ :转义字符
三、限定符
对前面的字符或字符串做限定说明
* :某个字符后面出现星号,代表该字符可以不出现或者出现多次
?:某个字符后面出现问号,代表该字符可以不出现或者出现一次
+:某个字符后面出现加号,代表该字符可以出现一次或者出现多次,至少出现一次
{n,m}:某个字符后面出现,代表该字符最少出现 n 次,最多出现 m 次
{m}:正好出现 m 次
四、POSIX字符
使用POSIX字符类时,必须以 [[ 开头 ,以 ]] 结束。其中,内层的 [ ] 是字符类本身的部分(例如:[:lapha:]),外层的 [ ] 匹配符用来定义一个字符类,匹配括号内的一个字符
字符类 说明 [:alnum:] 任何一个字母或数字(等价于[a-zA-Z0-9]) [:alpha:] 任何一个字母(等价于[a-zA-Z]) [:blank:] 空格或制表符(等价于[\t ]) [:cntrl:] ASCII控制字符(ASCII0到31,再加上ASCII127) [:digit:] 任何一个数字(等价于[0-9]) [:print:] 任何一个可打印字符 [:graph:] 和[:print:]一样,但不包括空格 [:lower:] 任何一个小写字母(等价于[a-z]) [:upper:] 任何一个大写字母(等价于[A-Z]) [:punct:] 既不属于[:alnum:]也不属于[:cntrl:]的任何一个字符 [:space:] 任何一个空白字符,包括空格(等价于[\f\n\r\t\v ]) [:xdigit:] 任何一个十六进制数值(等价于[a-fA-F0-9])
一个字符类是一个字符
本文来自博客园,作者:chao_xiong,转载请注明原文链接:https://www.cnblogs.com/chao-xiong/p/16191038.html

浙公网安备 33010602011771号