当前位置: 技术问答>linux和unix
sed匹配数字的疑惑
来源: 互联网 发布时间:2017-05-22
本文导语: 本帖最后由 angus2887 于 2012-11-18 18:14:06 编辑 日志文件中其中一行内容为:abc135hello 想使用正则找到这一样,分别使用命令egrep和sed。 问题1:数字匹配上d是用来匹配数字的,使用d+匹配不到135,但是必须用[0-9]才可以 ...
想使用正则找到这一样,分别使用命令egrep和sed。
问题1:数字匹配上d是用来匹配数字的,使用d+匹配不到135,但是必须用[0-9]才可以
问题2:egrep命令使用[0-9]+正则可以匹配到135,sed命令却不行
[root@livedvd log]# egrep "abcd[0-9]+hello" tmp.txt
abcd135hello
[root@livedvd log]# egrep "abcdd+hello" tmp.txt
[root@livedvd log]# sed -n '/abcd[0-9]+hello/p' tmp.txt
[root@livedvd log]# sed -n '/abcdd+hello/p' tmp.txt
[root@livedvd log]#
后来尝试单独看看d在sed中能匹配到什么,发现匹配到的是字母d而不是数字
[root@livedvd log]# sed -n 's/d/AAAAAAAAAAAA/p' tmp.txt
abcAAAAAAAAAAAA135hello
[root@livedvd log]#
这应该都是简单的正则匹配,不知道原因在什么地方,求解答,谢谢
|
看这篇文章,详细介绍了哪些支持,哪些不支持。以及grep ,grep -e ,egrep的区别
|
egrep 不支持 d (属于shorthand character classed), perl和java支持d
|
是不是Linux shell中正则表达时中d不是匹配的数字啊,数字匹配一直的的是[0-9]