首页 > 系统服务 > 详细

Shell grep 和正则

时间:2016-01-28 14:00:31      阅读:169      评论:0      收藏:0      [点我收藏+]

在grep中正则有三种模式, 分别是基础(-G), 扩展(-E)和Perl(-P)模式

basic 模式

不支持\d, 支持\w \s \b. 

?, +, {, |, (, and ) 在basic 模式中也失去了其在正则式中的特殊含义

如果想在basic 中使用这些特殊字符,可以用\来转义

1 # echo "- 2222-" |grep -o [0-9]+
2 null
3 # echo "- 2222-" |grep -o [0-9]\+
4 2222

 

egrep 表示扩展模式, 实际上是grep -E 的别名

扩展模式不支持贪婪, \d,  [\w]

# echo "- Aa2222-" |grep -oE [\w] 
输出为空.

同样扩展模式不支持捕获

  1. (?:X)  匹配但是非捕获
  2. pattern(?=X)     匹配但是非捕获, 向X前匹配
  3. (?<=X) pattern  匹配但是非捕获, 向X后匹配
  4. pattern(?!X)      与2相反, 表示pattern后面是非X
  5. (?<!X) pattern   与3相反, 表示pattern前面非X

Perl正则模式支持贪婪, 不支持(?:pattern)的非捕获模式

 

1 # echo "- 2222-" |grep -oP [0-9]+?  #非贪婪模式
2 2
3 2
4 2
5 2
6 
7 # echo "- 2222-" |grep -oP [0-9]+  #贪婪模式
8 2222

 

Shell grep 和正则

原文:http://www.cnblogs.com/v394435982/p/5165860.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!