免费注册 查看新帖 |

Chinaunix

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

请教一个grep的问题(已解决) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-03-07 18:49 |只看该作者 |倒序浏览
  1. [root@server ~]# cat testfile
  2. looks
  3. likes
  4. looker
  5. long
复制代码

  1. [root@server ~]# grep 'oo*' testfile
  2. looks
  3. looker
  4. long
复制代码


  1. [root@server ~]# grep 'ooo*' testfile
  2. looks
  3. looker
复制代码



不明白的地方:grep 'ooo*' testfile 应该是匹配testfile中有三个“o”的项啊?

[ 本帖最后由 daaxiang 于 2006-3-8 13:15 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2006-03-07 18:50 |只看该作者
原帖由 daaxiang 于 2006-3-7 18:49 发表
  1. [root@server ~]# cat testfile
  2. looks
  3. likes
  4. looker
  5. long
复制代码

  1. [root@server ~]# [root@server ~]# grep 'oo*' testfile
  2. looks
  3. looker
  4. long
复制代码



[code][root@server ~]# gre ...


看看 * 号是个什么意思

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
3 [报告]
发表于 2006-03-07 18:52 |只看该作者
它们一样么?
grep 'ooo.*'
grep 'ooo*'

论坛徽章:
0
4 [报告]
发表于 2006-03-07 19:49 |只看该作者
原帖由 dbcat 于 2006-3-7 18:50 发表
看看 * 号是个什么意思



  1. *            一个单字符后面跟*,表示匹配0个或多个此单字符
复制代码



还是不太明白啊,'ooo*'应该表示至少有3个‘o’呀

论坛徽章:
0
5 [报告]
发表于 2006-03-07 19:52 |只看该作者
原帖由 寂寞烈火 于 2006-3-7 18:52 发表
它们一样么?
grep 'ooo.*'
grep 'ooo*'



这个应该是不一样的吧

论坛徽章:
0
6 [报告]
发表于 2006-03-07 22:38 |只看该作者
匹配0到n

论坛徽章:
0
7 [报告]
发表于 2006-03-08 00:50 |只看该作者
有必要用*号和单引号吗?
grep oo testfile
grep ooo testfile
不是符合你的要求吗?
grep中用到Metacharcter+pattern(要和引号配合)一般是几种情况":
grep '^pattern'  匹配行头
grep 'pattern$'   行尾
grep 'p.....n'     点号任意,一点一字符.
grep '[a-z0-9]*'  范围
grep '[Pp]attern'  选择
grep '[^a-z]attern'  非

grep 'pattern*'没见过.
你的例子中,如果查找的是从第二个字符起连续两个oo,应该是
grep '^.[o][o]*' testfile
没有试验环境.版砖任意--free

论坛徽章:
0
8 [报告]
发表于 2006-03-08 08:29 |只看该作者
1、*表示跟前驱的0个和多个字符匹配,oo*表示一个o加零个或多个o,所以
只有一个o也可以匹配成功,当然ooo*也是同理,匹配oo或多个o。
2、oo.*表示匹配oo加任意零个或多个字符。
aizong 该用户已被删除
9 [报告]
发表于 2006-03-08 09:28 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
10 [报告]
发表于 2006-03-08 12:01 |只看该作者
原帖由 ruifox 于 2006-3-8 08:29 发表
1、*表示跟前驱的0个和多个字符匹配,oo*表示一个o加零个或多个o,所以
只有一个o也可以匹配成功,当然ooo*也是同理,匹配oo或多个o。
2、oo.*表示匹配oo加任意零个或多个字符。


换个说法不用用00 来表示不利于理解



1、*表示跟前驱的0个和多个字符匹配,12*表示一个2加零个或多个2,所以
只有一个2也可以匹配成功
2、12.*表示匹配12加任意零个或多个字符。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP