部分Shell中的通配符与正则表达式的元字符的区别

1. Shell通配符

        Shell通配符一般用于数据处理或文件名匹配

通配符说明举例
*与零个或多个字符匹配# ls  /etc/sys*           列出/etc下所有以sys开头的文件
?与任何单个字符匹配# ls /etc/??               找出/etc/目录下所有由两个字符组成的文件
[ ]与[ ]中任何一个字符匹配# ls /etc/[f-g]*.conf    找出/etc下与f-g范围内的字符开头,并以.conf 的结尾的文件
[ ! ]与[ ]之外的任何一字符匹配# ls /etc/y*[!.conf]      找以y开头不以.conf结尾的文件

2. 正则表达式元字符

        正则表达式之所以拥有过滤文本的功能,是因为它定义了一系列的元字符,元字符与替他字符组合起立形成一定的规则,而只有符合规则的文本才能保留下来。

2.1基础正则表达式元字符

符号说明举例
限定符 *用于匹配前导字符0次或多次hel*o
点字符 .

用来匹配除换行符\n外任意的单个字符,一个 . 匹配一个字符

...config
行首定位符 ^用来匹配行首字符,表示行首字符是 后面的那个字符# ls /etc/ | grep "^sys"
行尾定位符 $用来陪陪文本行末尾的字符,与 作用相反

# ls /etc/ grep conf$

字符组 [ ]用来指定一个字符集合的,只能匹配单个字符

# ls /etc/ | grep "^ab[0-9]"

排除型字符组 [^]表示不匹配其中列出的任意字符

注:元字符 “ * ”或“ . ”位于“[ ]"符号之中,便仅表示一个普通的字符,不再具有特殊意义。

2.2 扩展正则表达式元字符

符号说明举例
限定符 +* 功能相似,但要求至少匹配一次# ls /etc/ | egrep "^ss+"
限定符 ?限定前导符号最多出现1次# ls /etc/ | egrep "^ss?"
“|”符号和“( )”符号| 符号实现正则表达式之间的“或”运算,( )表示一组可选值的集合,这两者符号经常结合一起使用,能够匹配多个字符,两者结合比 [ ] 功能更强大ls /etc/ | egrep "(ssh|ssl|^yum)"

注:在使用 “ + ”符号时使用了egrep命令,这是因为grep命令使用的时基本正则表达式,而egrep命令默认使用扩展正则表达式。如果使用grep命令加上-E选项。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值