免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3183 | 回复: 12

[文本处理] sed正则表达式的疑问 [复制链接]

论坛徽章:
0
发表于 2013-05-23 15:46 |显示全部楼层
文件含有
AA行

sed -n ‘/*AA/p’ file

无显示

正则表达式中元符号*不是表示匹配0次或多次吗,/*AA/不是可以解释成匹配0次或者多次空白?有点糊涂了,基础不牢呐(/.*AA/是没问题的。)

论坛徽章:
13
丑牛
日期:2013-08-16 15:08:22技术图书徽章
日期:2013-11-26 10:13:40双鱼座
日期:2013-11-08 15:03:26戌狗
日期:2013-11-08 13:52:30技术图书徽章
日期:2013-11-05 14:06:30戌狗
日期:2013-10-31 11:45:42CU十二周年纪念徽章
日期:2013-10-24 15:41:34天秤座
日期:2013-10-11 14:55:08子鼠
日期:2013-09-26 19:36:35水瓶座
日期:2013-09-26 17:44:56午马
日期:2013-08-26 10:24:23丑牛
日期:2013-08-19 14:43:22
发表于 2013-05-23 15:53 |显示全部楼层
因为*匹配的是前面字符或字符组0个或多个

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
发表于 2013-05-23 15:54 |显示全部楼层
什么是什么意思是由上下文决定的

论坛徽章:
0
发表于 2013-05-23 16:20 |显示全部楼层
回复 2# 代号:军刀


  那/*AA/的话不是可以解释成AA前面没有任何字符,不是可以匹配?

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
发表于 2013-05-23 16:34 |显示全部楼层
……
语法就这么定的,你要用它就要遵守他的规则了嘛。
就像说话,形容词用来修饰名词,你不能单独说一个形容词:
一朵漂亮的花—>对
一朵漂亮  —>呃……

论坛徽章:
0
发表于 2013-05-23 17:00 |显示全部楼层
回复 5# seesea2517


    嗯 我知道这个语法的规则,按照这个解释那么/*AA/不合法了?那如果改成sed语句中 /*AA/改成/$/ or /^/又作何解释呢?

论坛徽章:
0
发表于 2013-05-23 17:38 |显示全部楼层
*匹配前面的子表达式零次或多次。不能匹配“空”。也就是说*前面没有表达式时,它只是表示一个普通字符*。
  1. [root@localhost ~]# cat file
  2. *AA
  3. AA
  4. [root@localhost ~]# sed -n '/*AA/p' file
  5. *AA
  6. [root@localhost ~]# echo ''|sed -n '/*/p'
  7. [root@localhost ~]# echo ''|sed -n '/^$/p'

  8. [root@localhost ~]#
复制代码

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
发表于 2013-05-23 17:44 |显示全部楼层
回复 6# csdemo


    /$/ 表示行尾一个位置,/^/表示行首的位置,这两个是“名词”,* 是“形容词”不能单独使用,名词嘛,就可以了。

论坛徽章:
5
未羊
日期:2014-08-04 16:15:21天秤座
日期:2014-08-13 13:52:372015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:112015亚冠之浦和红钻
日期:2015-06-29 15:30:48
发表于 2013-05-23 17:56 |显示全部楼层
seesea2517 发表于 2013-05-23 17:44
回复 6# csdemo


高~~实在是高

论坛徽章:
0
发表于 2013-05-23 20:02 |显示全部楼层
回复 1# csdemo


    sed -n '/.*aa/p'
这样就对了啦!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP