grep正则表达式用法技巧

发布时间:2020-07-08编辑:脚本学堂
分享一些grep正则表达式的使用技巧,也是grep正则表达式中容易犯错的地方,感兴趣的朋友参考下。

grep正则表达式坑了半天,这里总结下正确的使用方法。

1、在linuxjishu/14086.html target=_blank class=infotextkey>grep命令和sed命令中,t和s都是无效的,要表示制表符和空格,只能直接敲入tab和空格键,这个在shell/ target=_blank class=infotextkey>shell脚本中还好说,在命令行模式下,因为tab默认是会智能补全命令的,所以要在按tab之前按下ctrl+v,就可以把tab打出来了。

2、egrep和grep -E是等效的,egrep相比grep命令对正则表达式有了一些扩展支持,具体包括几点(其实这些特性grep是可以用的,只不过要在元字符前面加上转义符,比如用到+时,应敲入+):

+:匹配一个或多个先前的字符。如:’[a-z]+able’,匹配一个或多个小写字母后跟able的串,如loveable,enable,disable等。

?:匹配零个或多个先前的字符。如:’gr?p’匹配gr后跟一个或没有字符,然后是p的行。

a|b|c :匹配a或b或c。如:grep|sed匹配grep或sed

():分组符号,如:love(able|rs)ov+匹配loveable或lovers,匹配一个或多个v。
x{m},x{m,},x{m,n}:作用同x{m},x{m,},x{m,n}

3、grep还支持一些POSIX字符类
 

[:alnum:]:文字数字字符
[:alpha:]:文字字符
[:digit:]:数字字符
[:graph:]:非空字符(非空格、控制字符)
[:lower:]:小写字符
[:cntrl:]:控制字符
[:print:]:非空字符(包括空格)
[:punct:]:标点符号
[:space:]:所有空白字符(新行,空格,制表符)
[:upper:]:大写字符
[:xdigit:]:十六进制数字(0-9,a-f,A-F)

以上总结了在使用grep正则表达式时遇到的问题,也算是一些技巧性的东西吧,有需要的朋友,可以参考学习下。