您的位置:首页 > 运维架构 > Shell

Shell正则表达式与通配符

2016-05-19 15:38 387 查看
正规表示法:  就是处理字串的方法,他是以行为单位来进行字串的处理行为,透过一些特殊符号的辅助,可以让使用者轻易的达到“搜寻/删除/取代”某特定字串的处理程序
通配符和正规表示法的区别:
通配符代表的是bash操作界面的一个功能,但正则表示法是一种字串处理的‘表示法’,只要工具程序支持这种表示法,那么该工具程序就可以用来作为正规表示法的字串处理之用

正规表示法:
                   基础正规表示法:简单的字串处理
                   延伸正规表示法:群组的字串处理

基础正规表示法:
[  ]                  :  利用中括号来搜寻集合字节    [a-zA-Z]    [^0-9] 
.                     : 小数点代表‘一定有一个任意字节’的意思。   g..d   
^                  :   代表行首定位符              ^[a-z]    ^#   

$               :  行尾定位符             the$    \.$       ^$

*                    : 星星号代表‘重复前一个字节,0到无穷多次’的意思,为组合形态。   ooo* 

.*                     : 代表零个或多个任意字节      找出任意数字         [0-9]*
\{ m,n \}             : 限定连续字符的范围{}, 就是限制一个范围区间内的重复字节数。  因为{  }的符号在shell中是有特殊意义的,因此,我们必须要使用跳脱字符\来让他失去意义才行。x\{m\}   x 重复 m 次,x\{m,\}   x 重复 至少m 次,x\{m,n\}  x 重复 至少m 次,但不超过n次,     go\{2,5\}g       go\{2,\}g     
\ ( root \ )               : 将root这个内容存储在“保留空间”,最大存储九个
\n                      :   通过\1 至\9 调用保留空间中的内容        查找包含以root:开头并以:root结尾的字串行grep
    --color      “\ ( root \ ) \ ( : \ ).*\2\1”   /etc/passwd

扩展正则表达式:

{n,m}                          等同于基本正则表达式

+         表示前面出现过一次或多次,如tom+     --tom,tomm,tommm        

?     前面的字符出现0次或者1次  如tom?   --tom, to........

|      匹配逻辑或者,即匹配    |  前或后的字串

(  )     匹配正则集合

通配符:
 [  ]                          匹配列表内的任意字符,比如[abc],匹配a、b、c当中的一个字符  [^0-9] [a-z]  [A-Z]
 ?                             匹配任意一个字符
 *                             匹配0到无穷多个任意字符

扩展通配符:
?()     括号里面的值可以出现0次也可以1次
*()       括号里面的值可以出现任意次    0次或1次或多次
+()      括号里面的值可以出现1次或是多次
@()     括号里面的值可以只能出现1次
 

POSIX规范:
特殊表示法                                  代表意义
[:alnum:]                                      代表英文大小写及数字,亦即0-9,A-Z,a-z
[:alpha:]                                       代表任何英文大小写字节,亦即A-Z,a-z
[:blank:]                                       代表空白键与[Tab]按键两者
[:cntrl:]                                        代表键盘上面的控制按键,亦即包括CR,LF,Tab,Del....等等
[:digit:]                                         代表数字而已,亦即0-9
[:graph:]                                      除了空白字节(空白键与[Tab]按键)外的其他所有按键
[:lower:]                                        代表小写字节,亦即a-z
[:print:]                                         代表任何可以被列印出来的字节
[:punct:]                                        代表标点符号(punctuation  symbol),亦即: ''   '    ?  !; : # $ ....
[:upper:]                                        代表大写字节,亦即A-Z
[:space:]                                        任何会产生空白的字节,包括空白键,[Tab],CR 等等
[:xdigit:]                                        代表16进位的数字类型,因此包括:0-9,A-F,a-f的数字与字节

 Note:
$(  ) 代表命令      和`` 相等
$(( ))  运算
[  ]  判断功能      和test相等 
{  }     大括号里写,或. 表示所有的值都被调用      mkdir   {ouyang,bo}/{ouyang,bo}  -p

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: