wildcard和regular expression

wildcard

1.准确地讲,wildcard是一种命令行的路径扩展功能,这与变量替换$和命令替换$( )是类似的,也就是命令行先对wildcard进行替换,再执行。牢记:wildcard只是作用于argument里的path部分

2.常见的wildcard:

  • *:匹配0或多个任意字符
  • ?:匹配单个任意字符
  • [xyz]:匹配xyz中任意一个字符(必须有且只能有一个)
  • [!xyz]:匹配除xyz之外的任意一个字符
  • [a-z]:匹配a-z之间的任意一个字符(-的左右两边均有字符时才能表示一个范围,否则当作减号处理)
  • {str1,str2,str3}:匹配str1,str2,str3中任意一个字符串(注意,左右两边不能有空格)

Tips以*或?开头的wildcard不能匹配隐藏文件(以.开头)

 

re

1.re是一种规范化的字符串表达方式,主要用于某些文字处理工具之间。regular expression(re)和commamd-line一样,也分literal和meta。然而,不少re的meta字符是与shell的meta字符冲突的。譬如星号*,在re中表示匹配之前的零个或多个字符,而在shell meta中是wildcard(grep中的匹配字符串需要用引号包括也正是为了将其中的re与shell本身的meta区别

2.re中的char.set(char.set的存在是为了便于修饰字符确定目标,譬如abc?和(abc)?是不一样的):

  • abc :匹配abc三个连续的字符,视为三个char.set
  • (abc) :匹配abc三个连续的字符的集合,视为一个char.set
  • abc|xyz :匹配或abc或xyz这两个char.set之一
  • [abc] :匹配单一字符,或a或b或c
  • [^abc] :匹配单一字符,不为或a或b或c即可(与wildcard中的[!abc]相同)
  • . :匹配单个任意字符(与wildcard中的?相同)

3.re中的meta:

  • 锚点:用于标识于句子中的位置所在
    • ^ :表示句首
    • $ :表示句尾
    • /< :表示词首
    • /> :表示词尾
  • 修饰字符:独立表示时不具有意义,需与前一个char set配合,表示char set出现的次数
    • * :出现0或多次
    • ? :出现0或1次
    • + :出现1或多次
    • {n} {n,} {n,m} :分别表示出现n次,出现n或n次以上,出现n到m次


grep和egrep的区别

相比grep,egrep多了以下几项功能:

  • 支持?和+这两种meta
  • 支持a|b
  • 在处理{n,m}时,不需要加转义符/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值