码迷,mamicode.com
首页 > 系统相关 > 详细

shell脚本学习笔记之正则表达式

时间:2015-08-05 22:35:06      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:表达式   键盘   hello   

***基本正则表达式(可支持grep,sed,awk等shell工具)


* 0个或多个在*字符前面的那个普通字符
. 匹配任意字符
^ 匹配行首,或后面字符是非
$ 匹配行尾


[]匹配字符集合
\ 转义符,屏蔽一个元字符的特殊意义
\<\>  精确匹配符号
\{n\} 匹配前面字符出现n次
\{n,\} 匹配前面字符至少出现n次
\{n,m\} 匹配前面字符出现n~m次


注意:符号*前面必须至少有两个字符(当符号*后面没有字符时)或必须*前面至少有一个字符(当符号*后面至少有一个字符时)才有意义
      符号.前后必须同时有字符才有意义
    []使用时前面


1.符号*    0个或多个在*字符前面的那个普通字符
  例子  hel*o
   hel*o  可以是heo,helo,hello,helllo可以可以出现0到无穷次


2.字符 .   匹配任意字符
  例子  .7
   .7 首先这是两个字符,其中后面一个字符是7,而前面一个字符是任意一个键盘上可以输出的字符
  ...7  这是4个字符,最后一个还是7,前面3个字符是任意一个键盘上可以输出的字符


综合
  hel*o.  这个表示heo后面任意一个字符
                  helo后面任意一个字符
                  hello后面任意一个字符


  hel.*o  这个就表示以hel开头,o结尾的任意字符都可以匹配


3.符号^    匹配行首,或后面字符是非
  例子  ^cloud
   ^cloud  这个表示行首的字符是cloud的行都会被匹配



综合
  ^h.*o  表示必须以行首h开头以o结尾中间任意字符


4.符号$  匹配行尾
   例子 hel$   表示必须以hel作为行尾
  
  综合 ^h.*o$   表示以h为行首以o为行尾中间任意字符
       ^$      表示为空
      ^hjo$    表示行首位h,行尾为o中间为j进行匹配,也就是说这                一个只有hjo才会被匹配


5.符号[]  匹配字符集合
  例子1.穷举
   [123456789]  表示匹配任意一个数字
  
  例子2.-的使用(范围)
   [1-9]   表示匹配任意一个数字
   [a-z]    匹配任意一个小写字母
   [A-Z]    匹配任意一个大写字母


   [^] 
   ^在[]里表示取反
   例子[^b-d]  表示匹配不在b到d之间的所有字符
  
综合
   [A-Za-z] [A-Za-Z]*  匹配所有的英文单词
   [A-Za-z1-9] [A-Za-z1-9]* 匹配所有的英文单词和数字


6.符号\      转义符,屏蔽一个元字符的特殊意义
  \* 匹配*字符,


7.符号\<\>   精确匹配符号
     屏蔽<>
  例子\<the\>  匹配the单词而不是含有the的单词或行


8.\{\}系列符号    匹配前面字符重复出现的次数
   \{n\}           匹配前面字符出现n次
   例子
    a\{4\}   匹配aaaa


   \{n,\}       匹配前面字符至少出现n次
  例子
    a\{2,\}  匹配aa,aaa,aaaa ......


   \{n,m\}   匹配前面字符出现n~m次
    a{2,4\}  匹配aa,aaa,aaaa


综合
[a-z]\{5\}   匹配5个小写字母


++++++++++++++++++++++++++++++++++++++++++++++++++++++++


扩展正则表达式(支持awk,perl等工具)
? 匹配0个或1个在其之前的那个普通字符
+ 匹配1个或多个在其之前的那个普通字符
() 表示一个字符集合或用在表达式中
|  表示“或”,匹配一组可选的字符


1.符号?
  例子
  jo?b   匹配job joob


2.符号+
  例子 
  s+eu   匹配sseu ssseu......


3.符号() 和符号|      表示一组可选字符的集合
 例子
 re(a|e|o)d  匹配 read reed reod


4.符号|
  re1|re2|re3...



 +++++++++++++++++++++++++++++++++++++++++++++++


通配(支持bash shell)
 符号*  表示任意位的任意字符
 符号? 表示一个任意字符
 符号^  表示取反
 符号[] 表示字符集合
 符号[^] 表示取反字符集合
 符号{}  表示一组表达式的集合


1.符号*
  例子 ls a*   查看所有以a开头的文件


2.符号?
  例子
  ls a?  查看以a开头的包含2个字符的文件


3.符号[]
  例子
  ls a[1-10] 查看a1.a2...a10
  ls a[a-z]* 查看以a开头的含有小写字母的文件
 
4.符号[^]
  例子
  ls a[^1-2]  查看不含有a1,a2的所有文件


5.符号{}
  例子
  ls a{[^1-2],a?,b*} 查看不包含a1,a2,的所有文件
                      或查看文件a和aa,或查看所有以b开头的文件
 




本文出自 “endmoon” 博客,请务必保留此出处http://endmoon.blog.51cto.com/10533729/1682038

shell脚本学习笔记之正则表达式

标签:表达式   键盘   hello   

原文地址:http://endmoon.blog.51cto.com/10533729/1682038

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!