免费注册 查看新帖 |

Chinaunix

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

[文本处理] sed中 n命令的疑惑 [复制链接]

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
31 [报告]
发表于 2014-07-03 10:21 |只看该作者
回复 28# blackold

但我不认为是n打印的,我认为是sed自动打印的。
   

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
32 [报告]
发表于 2014-07-03 10:21 |只看该作者
回复 27# blackold


我赞同楼主的说法,n 命令不会改变控制流。
在我的例子中:
  1. $ seq 10 | sed 'n;d'
  2. 1
  3. 3
  4. 5
  5. 7
  6. 9
复制代码
因为 d 命令的存在,BOTTOM的自动打印一次都没有执行过,所有的输出都是 n 的打印功能。

论坛徽章:
32
处女座
日期:2013-11-20 23:41:20双子座
日期:2014-06-11 17:20:43戌狗
日期:2014-06-16 11:05:00处女座
日期:2014-07-22 17:30:47狮子座
日期:2014-07-28 15:38:17金牛座
日期:2014-08-05 16:34:01亥猪
日期:2014-08-18 13:34:25白羊座
日期:2014-09-02 15:03:55金牛座
日期:2014-11-10 10:23:58处女座
日期:2014-12-02 09:17:52程序设计版块每日发帖之星
日期:2015-06-16 22:20:002015亚冠之塔什干火车头
日期:2015-06-20 23:28:22
33 [报告]
发表于 2014-07-03 10:25 |只看该作者
回复 32# ly5066113

说白了,如果关了自动打印,n还能打印吗?
   

论坛徽章:
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
34 [报告]
发表于 2014-07-03 10:30 |只看该作者
回复 29# lifayi2008


首先,他只是"从功能"上说的。

其次,例子里面也没有说明不会到BOTTOM。

我是从内部的执行流程来说的,当然这是我的理解。没有直接的文档支持。

info 说"如果没有关闭自动打印,n就输出模式空间的内容……"。
是不是等于说n的打印是自动打印?
这应该是可以找到的最“权威"的文档了,但也不直接。

另外,如果没有下一行,n会结束整个脚本,而不会执行n的后续命令。这也是我认为
n跳到BOTTOM的"理由"之一。

论坛徽章:
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
35 [报告]
发表于 2014-07-03 10:31 |只看该作者
本帖最后由 blackold 于 2014-07-03 10:41 编辑

回复 32# ly5066113


    表面看是这样,但不能证明n不会改变控制流。

我的理解是, sed 在内部存在某种机制,n会跳到BOTTOM,如果有下一行,则读入下一行到
模式空间,再跳到n的下一命令(d);如果没有下行,立即结束整个脚本并退出,不会执行n
的后续命令。

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
36 [报告]
发表于 2014-07-03 10:32 |只看该作者
回复 33# yestreenstars


这是两个概念,n的打印功能受到 -n 参数的控制,并不代表n的打印功能使用的是 sed 的自动打印。

论坛徽章:
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
37 [报告]
发表于 2014-07-03 10:33 |只看该作者
回复 30# lifayi2008

……只不过应用于下一行的命令不会从top开始,而是从n命令后面的命令开始


对于这点,我没有否认。

论坛徽章:
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
38 [报告]
发表于 2014-07-03 10:35 |只看该作者
回复 36# ly5066113


    如果这样说,那么也可以认为其它命令,比如s命令,也有打印功能,至少在一定条件下。

论坛徽章:
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
39 [报告]
发表于 2014-07-03 10:37 |只看该作者
本帖最后由 blackold 于 2014-07-03 10:37 编辑

对于这些,都没有找到支持文档。只是大家个人的理解。

怎么理解都行,自己觉得有道理就OK。

另外,如果根据某个理解,无法解释某些命令,应该是某个地方的理解有误了。

论坛徽章:
9
寅虎
日期:2013-12-02 12:49:22巨蟹座
日期:2014-07-18 18:13:34卯兔
日期:2014-07-25 14:43:08子鼠
日期:2014-07-26 10:10:51酉鸡
日期:2014-07-31 15:09:562015亚冠之本尤德科
日期:2015-05-19 09:27:382015亚冠之卡尔希纳萨夫
日期:2015-06-20 10:30:212015亚冠之阿尔纳斯尔
日期:2015-07-01 20:46:062015亚冠之城南
日期:2015-07-15 21:12:00
40 [报告]
发表于 2014-07-03 10:44 |只看该作者
嗯,这个可以用来结贴了,看来101hacks也只能用来入门了
blackold 发表于 2014-07-03 10:30
回复 29# lifayi2008
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP