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

Shell之Glob和RE的区别

时间:2019-10-01 16:00:48      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:bcb   master   马哥   com   等价   globbing   概念   examples   art   

Shell之Glob和RE的区别

?? Written by Zak Zhu

学习python风格, 优雅规范书写shell代码

参考

Glob

glob - globbing pathnames

通配符是Shell在写Pathname Expansion使用的, 比如find, ls, cp, mv, cat, yum等命令

Glob Comment Examples
* 匹配任意(>=0)个字符 e.g. a*b, 表示a与b之间可以有任意个字符, 可以匹配到ab, aab, a98db等
? 匹配1个任意字符 e.g. a?b, 表示a与b之间只能有一个字符, 可以匹配到axb, ayb, azb等
[list] 匹配list中的任意一个字符 e.g.1 a[123]b, 可以匹配到a1b, a2b, a3b e.g.2 a[A-C]b, 可以匹配到aAb, aBb, aCb
[^list] 匹配不在list中一个任意字符 e.g. a[^1-3]b, 可以匹配到acb, a4b, axb
{str1,str2...} 匹配大括号内所有str e.g. a{abc,xyz,123}b, 列出aabcb, axyzb, a123b

技术图片

RE

规则表达式就是用事先定义好的一些特定字符组合模板对文本内容过滤的语言

Linux中支持RE的命令有vim,grep, awk, sed等

默认贪婪匹配

Linux命令中常用的RE

RE Comment
. 匹配任意一个字符
[list] 匹配list中的任意一个字符
[^list] 匹配不在list中一个任意字符
[[:space:]] 匹配空格字符
次数匹配 用于指定匹配其前面的字符的次数
* 表示任意次, 等价于{0,}
? 表示0次或1次, 等价于{0,1}
+ 表示>=1次, 等价于{1,}
{m,n} 表示>=m次, <=n次
{m,} 表示>=m次
位置锚定 用于指定字符出现的位置
^char 锚定以char行首的内容
char$ 锚定以char行尾的内容

曾经一度把glob和re两个概念混淆!

?? Oh Yeah!

Shell之Glob和RE的区别

标签:bcb   master   马哥   com   等价   globbing   概念   examples   art   

原文地址:https://www.cnblogs.com/zakzhu/p/11615406.html

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