免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Nalternative
打印 上一主题 下一主题

【5楼解答的很详细,大家可以讨论下】sed 地址和模式匹配的问题 [复制链接]

论坛徽章:
0
101 [报告]
发表于 2014-04-29 10:39 |只看该作者
非常赞 学习了

论坛徽章:
0
102 [报告]
发表于 2014-07-25 15:51 |只看该作者
回复 10# xrzs1986


    不是失败而是前面的    “ -e '1,2d'  ”  命令一旦成功后面的 命令便不再执行,直接读取下一行。因此 seq 10 | sed -e '1,2d' -e '1,2d'
第一行与第二行只用到了  第一个 '1,2d' , 第二个不再执行。读取第三行时,第一个匹配失败,第二个的匹配  3 > 1 成功便删除,第四行
4 > 2 匹配失败。

论坛徽章:
0
103 [报告]
发表于 2014-07-25 16:27 |只看该作者
本帖最后由 ivorning 于 2014-07-25 16:43 编辑

又回头看了一遍 还是有点疑问
1、第一行读入空间执行,由于1=1,打开开关,1被删掉
2、第二行读入空间执行,由于2=2,第一个e里面的命令执行完成,而且2被删掉
3、第三行读入空间执行,此时第一个e执行完毕,开始执行第二个e,由于3>1,打开开关,3被删掉
4、第四行读入空间执行,还是在第二个e中,由于4>2,条件不满足所以打印出4
5、第五行读入空间执行,这里有点疑问了,在第一个e中执行,为什么没有因为5>1删掉5呢?
6、第六行读入空间执行,还是在第一个e中,由于6>2,条件不满足所以打印出4

论坛徽章:
2
操作系统版块每日发帖之星
日期:2016-05-16 06:20:0015-16赛季CBA联赛之八一
日期:2016-05-18 15:38:22
104 [报告]
发表于 2016-05-12 17:00 |只看该作者
回复 30# blackold
前面的都没看懂,就你这个看懂了。
  1. sed -n '3,2'p
复制代码
sed才不管你的2个line是不是后面一定比前面的大。反正他判断行号是不是>=line1,如果不是,直接跳过读入下一行;如果是,执行p,然后这边到底是先判断是不是<line2还是先进入下一行就不知道了。
总归就是他压根没有一次性判断line1和line2,直到判断了line1成功之后才会去判断line2.
所以seq 6|sed -e '1,2d' -e '1,2d'才会打印出来4而把3干掉了

   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP