免费注册 查看新帖 |

Chinaunix

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

[学习分享] 正则表达式取反不行 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-05-07 20:47 |只看该作者 |倒序浏览
文件test内容是
1a1
2b2
3c3
4d4
使用命令grep "[abc]" test结果是正确的
1a1
2b2
3c3
但是查询不包括abc的行的命令grep "[^abc]" test结果却是
1a1
2b2
3c3
4d4
使用命令grep -v "[abc]" test是正确的

请教大家
为什么命令grep "[^abc]" test 不行

论坛徽章:
0
2 [报告]
发表于 2014-05-07 21:27 |只看该作者
已经明白了

论坛徽章:
0
3 [报告]
发表于 2014-05-08 17:22 |只看该作者
dfgghjkwtwe 发表于 2014-05-07 21:27
已经明白了


楼主, 明白了应该说出来, 大家分享分享.

论坛徽章:
0
4 [报告]
发表于 2014-05-08 20:30 |只看该作者
回复 3# hsnotebook


    -v选项的意思是先查找符合正则表达式[abc]的行,不去显示这些行,而是显示不符合的行。

grep "[^abc]" test中的"[^abc]"的意思是并不是对查找后的结果取反,而是在查找之前对正则表达式取反。
举个例子:
假如所有的字符包括 0-9a-zA-Z,"[^abc]" 的意思就是"[0-9d-zA-Z]" 不包括abc
grep "[^abc]" test  命令就等于 grep "[0-9d-zA-Z]" test
所以grep "[^abc]" test命令的结果就是
1a1
2b2
3c3
4d4

前3行也在"[0-9d-zA-Z]"这个表达式的范围

论坛徽章:
0
5 [报告]
发表于 2014-05-08 22:42 |只看该作者
楼上正解
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP