Shell之Glob和RE的区别

Posted zakzhu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell之Glob和RE的区别相关的知识,希望对你有一定的参考价值。

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. aabc,xyz,123b, 列出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的区别的主要内容,如果未能解决你的问题,请参考以下文章

ansible 中shell 模块和command 模块的区别

正则表达式 re.search 和 re.findall 的区别

path() 和 re_path() 有啥区别?

shell从入门到精通shell脚本几种运行方式的区别

shell和shell脚本 有啥区别啊

re.match re.search re.findall区别