免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 6175 | 回复: 26
打印 上一主题 下一主题

egrep 的模式匹配问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-10-16 21:39 |只看该作者 |倒序浏览
hello@world:~$ echo 'abcdefg' | egrep -o '([abcd]|255){3}'     # 此处能输出3个字母
abc
hello@world:~$ echo '255255255255255' | egrep -o '([abcd]|255){3}'      # 此处能输出3个"255"
255255255
hello@world:~$ echo 'abcdefg' | egrep -o '([abcd]|25[5]){3}'   # 这里不明白, 为什么就这个命令不能输出3个字母呢?为什么不是输出"abc" ?
hello@world:~$ echo '255255255255255' | egrep -o '([abcd]|25[5]){3}'    # 此处能输出3个255
255255255
hello@world:~/read_note/sed_awk/example$


# egrep 版本是 GNU grep 2.5.4.
# bash 版本是 GNU bash, version 3.1.17

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
2 [报告]
发表于 2009-10-16 21:44 |只看该作者

回复 #1 freeman731 的帖子

你确定?
可以输出的。

论坛徽章:
0
3 [报告]
发表于 2009-10-16 21:48 |只看该作者
有图有真相

抓图1.png (11.66 KB, 下载次数: 26)

有图有真相

有图有真相

论坛徽章:
0
4 [报告]
发表于 2009-10-16 21:49 |只看该作者

回复 #2 blackold 的帖子

见3楼

论坛徽章:
0
5 [报告]
发表于 2009-10-16 21:54 |只看该作者

回复 #1 freeman731 的帖子

[jesse@localhost 2d]$ echo "abcd222bbbb222ddd255255255" | egrep -o '([abcd]|25[5]){3}'
abc
bbb
ddd
255255255


[jesse@localhost 2d]$ egrep -V
GNU grep 2.5.3

Copyright (C) 1988, 1992-2002, 2004, 2005  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

你的egrep版本比我的都新啊!

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
6 [报告]
发表于 2009-10-16 22:03 |只看该作者
我的grep 2.53版,没有这个问题。
echo 'abcdefg' | egrep -o '([abcd]|25[5])'
echo 'abcdefg' | egrep -o '([abcd]|25[5]){2}'
这几个输出什么?

论坛徽章:
0
7 [报告]
发表于 2009-10-16 22:11 |只看该作者


我找了GNU grep 2.5.3版本来执行了这个命令: echo 'abcdefg' | egrep -o '([abcd]|25[5]){3}'
竟然可以输出"abc"
而 GNU grep 2.5.4 不能!!
grep 的BUG ?

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
8 [报告]
发表于 2009-10-16 22:12 |只看该作者

回复 #7 freeman731 的帖子

有可能。

论坛徽章:
0
9 [报告]
发表于 2009-10-16 22:16 |只看该作者

回复 #6 blackold 的帖子

和LZ情况一样
这个第一条输出:
a
b
c
d
第二条没输出

论坛徽章:
0
10 [报告]
发表于 2009-10-16 22:18 |只看该作者

  1. [rockfall@Rocfall ~/download]$echo 'abcdefg' | egrep -o '([abcd]|25[5]){3}'
  2. [rockfall@Rocfall ~/download]$grep --version
  3. GNU grep 2.5.3

  4. Copyright (C) 1988, 1992-2002, 2004, 2005  Free Software Foundation, Inc.
  5. This is free software; see the source for copying conditions.  There is NO
  6. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

复制代码

有点晕了,([abc]|25[5]){3}是什么意思?

  1. [rockfall@Rocfall ~/download]$echo "abc222ddd" | egrep -o '([abc]|25[5]){3}'[rockfall@Rocfall ~/download]$echo "abc222ddd255" | egrep -o '([abc]|25[5]){3}'
  2. [rockfall@Rocfall ~/download]$echo "abc222ddd255255" | egrep -o '([abc]|25[5]){3}'
  3. [rockfall@Rocfall ~/download]$echo "abc222ddd255255255" | egrep -o '([abc]|25[5]){3}'
  4. abc
  5. 255255255
  6. [rockfall@Rocfall ~/download]$

复制代码

[ 本帖最后由 haimming 于 2009-10-16 22:31 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP