LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1566|回复: 3

about bash正则

[复制链接]
发表于 2007-11-16 16:49:09 | 显示全部楼层 |阅读模式
我一直有个问题,对于正则.
好像每个应用程序对待正则都不是那么一样,也好像没有标准的正则.
比如说吧, 我在一个目录下, 有一个文件叫作 index
bash $ ls indexn*
他会提示说找没有indexn*这个文件, 也就是说, index 没有匹配到indexn*中啦, 但是, 根据一些资料所记载, x* 的意思是, 匹配 0-1
个x + 任意的字符, 于是我试了下 egrep
我的index 文件中, 只有一行, 内容为 index
bash $ egrep 'indexn*' index
结果显示是匹配的!
发表于 2007-11-16 18:35:43 | 显示全部楼层
shell本身是不支持正则的,支持glob
比如grep awk等等工具是支持正则表达式的。
至于标准不是没有,反而很多eg POSIX regex, GNU regex, PCRE
用之前先要了解是否支持regex.支持那种标准的regex
回复 支持 反对

使用道具 举报

发表于 2007-11-17 19:50:25 | 显示全部楼层
支持正则表达式的是那些工具, 每个工具对正则表达式的支持程度不一样吧。 支持较好的肯定是awk, egrep等这些咯。 我也不懂。
回复 支持 反对

使用道具 举报

发表于 2007-11-18 00:07:32 | 显示全部楼层
ls indexn*
这里的*是通配符,表示以indexn开头,后跟任意个字符的文件名,而你这里根本没有文件名符合该规则的,所以提示没有该文件

grep indexn* index
这里的*是正则表达式
*
匹配零个或多个先前字符  

indexn* 可以理解为匹配0个n或多个n,按照0个n,那么就找到了index

你显然误解了通配符和正则表达式样,同样的字符在这2者里的表示意义是不同的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表