免费注册 查看新帖 |

Chinaunix

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

请大侠解惑:shell中[]的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-06-06 01:25 |只看该作者 |倒序浏览
本帖最后由 fengjihu 于 2010-06-06 01:32 编辑

OS:CentOS5.4
请问:在[]中^是否是表示“非”的意思?如果不是,请详解,如果是,请看下面例子
1、
[root@CentOS5 ~]# grep '^[^48]' data.f
219   dec     2CC1999 CAD     23.00   PLV2C   68
216   sept    3ZL1998 USP     86.00   KVM9E   234
这条数据为什么没有匹配上?
47      Oct     3ZL1998 LPSX    43.00   KVM9D   512

2、我本意是要匹配不含48的项,为什么全都显示了出来?
[root@CentOS5 ~]# grep '[^48]' data.f
48      Dec     3BC1997 LPSX    68.00   LVX2A   138
483     Sept    5AP1996 USP     65.00   LVX2C   189
47      Oct     3ZL1998 LPSX    43.00   KVM9D   512
219     dec     2CC1999 CAD     23.00   PLV2C   68
484     nov     7PL1996 CAD     49.00   PLV2C   234
483     may     5PA1998 USP     37.00   KVM9D   644
216     sept    3ZL1998 USP     86.00   KVM9E   234

3、shell中,[48]是匹配48,还有所有包含4、8的行?

论坛徽章:
0
2 [报告]
发表于 2010-06-06 13:20 |只看该作者
没人知道吗?

论坛徽章:
0
3 [报告]
发表于 2010-06-06 13:53 |只看该作者
因为你的[] 用法不对..
老生常谈了.. [^48]匹配非4非8的字符

论坛徽章:
0
4 [报告]
发表于 2010-06-06 17:21 |只看该作者
谢谢楼上,那请问,[^48]匹配非4非8的字符,那么第二个例子为什么会出现这样的结果?谢谢

论坛徽章:
0
5 [报告]
发表于 2010-06-07 10:34 |只看该作者
回复 4# fengjihu


    [root@CentOS5 ~]# grep '[^48]' data.f

侬少加了一个^,应该是

  1. [root@CentOS5 ~]# grep '^[^48]' data.f
复制代码

论坛徽章:
0
6 [报告]
发表于 2010-06-07 11:36 |只看该作者
[^48]是匹配4和8以外的数

第一个问题中开头是47必然匹配不了,因为开头是4啊,
你的第二个问题中在每一行中有非4,8的数,所以当然会全匹配了,

论坛徽章:
0
7 [报告]
发表于 2010-06-07 17:42 |只看该作者
结贴,谢谢。

论坛徽章:
0
8 [报告]
发表于 2010-06-07 22:48 |只看该作者
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP