免费注册 查看新帖 |

Chinaunix

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

请教sed "D"操作问题. [复制链接]

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
71 [报告]
发表于 2008-07-15 18:32 |只看该作者

回复 #69 无声无息 的帖子

原帖由 springwind426 于 2008-7-15 00:12 发表
1、sed是一系列命令的堆集,是从前到后顺序执行的,当执行到命令序列的最后的时候,会读取新的内容,并从头开始执行命令序列。
2、当模式空间中有内容的时候,sed是不读入新的内容的,但是仍然从头开始执行命令序列。
3、D是删除模式空间中从开头到第一个出现的换行符之间的内容(包括换行符),同时略过D后面的所有命令序列(实际上就是跳到命令序列的最后),如果模式空间中没有换行符,那么它的作用与d相同,就是删除当前模式空间的内容

比如:
sed '.....;D;s/1/2/'  这个表达式中,s/1/2/永远不会执行,因为它在D后面。


觉得springwind426没有说清楚。比如“当模式空间中有内容的时候,sed是不读入新的内容的,"具体指什么?

[ 本帖最后由 blackold 于 2008-7-15 18:34 编辑 ]

论坛徽章:
0
72 [报告]
发表于 2008-07-15 18:55 |只看该作者
The delete command (d) deletes the contents of the pattern space and causes a new line of input to be read with editing resuming at the top of the script. The Delete command (D) works slightly differently: it deletes a portion of the pattern space, up to the first embedded newline. It does not cause a new line of input to be read; instead, it returns to the top of the script, applying these instructions to what remains in the pattern space. We can see the difference by writing a script that looks for a series of blank lines and outputs a single blank line. The version below uses the delete command


来自 sed &awk 一书的解释

论坛徽章:
0
73 [报告]
发表于 2008-07-22 16:03 |只看该作者
太强了,学习了

论坛徽章:
0
74 [报告]
发表于 2010-05-19 17:14 |只看该作者
好久没用又给忘记了,翻回来复习一下.!╮(╯▽╰)╭
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP