免费注册 查看新帖 |

Chinaunix

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

能把这段代码完全看懂,就可以说你掌握sed了 [复制链接]

论坛徽章:
0
31 [报告]
发表于 2010-04-04 21:02 |只看该作者
回复 30# kingoftime3

16和19行中的为什么还要"g",前面不是已经将保持空间复制到模式空间了吗?

论坛徽章:
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
32 [报告]
发表于 2010-04-04 22:19 |只看该作者
回复 31# kangle000


    因为已经修改了。g回原样。

论坛徽章:
0
33 [报告]
发表于 2010-04-04 22:32 |只看该作者
回复 30# kingoftime3


    还是很迷糊。。。
!!!

有空再看看手册。。。  总觉得他的方法 很不可理喻。
这个 结果,只能用这个方法做??

  最好能说下方法比较好理解。。。   命令 比较拗口。。  怎么看都不顺口。。。

论坛徽章:
0
34 [报告]
发表于 2010-04-04 23:50 |只看该作者
本帖最后由 kingoftime3 于 2010-04-05 08:31 编辑

回复 33# vitas333_cu


    这种方法在处理大文件时效率较高,它就像走路一样

  1. 111------        #先作一次判断
  2.          |        #两行合起来判断,先判断第二行是否匹配,再判断两行合起来是否匹配
  3. 222-----------       #扔掉上一行
  4.              |
  5. 333------------------
  6.                     |
  7. 444------------------------
复制代码
单行匹配后就立即跳转,两行匹配后先恢复成原来两行的样子再跳转,若没有匹配,则删除第一行,再将第三行读入进行下一轮

由于单行匹配后它就会退出这行的匹配,所以如果一行中有关键词,而且和下一行组合又有一个关键词,这样它就找不到第二种情况

至于为什么要在两行合并后才判断第二行是否匹配,是因为当只有第二行匹配时,如果不这样,会导致被误认为两行合起来匹配成功

论坛徽章:
0
35 [报告]
发表于 2010-04-05 00:53 |只看该作者
回复  vitas333_cu


    这种方法在处理大文件时效率较高,它就像走路一样单行匹配后就立即跳转,两行 ...
kingoftime3 发表于 2010-04-04 23:50




谢谢。。 终于明白他的意思了。。。

论坛徽章:
0
36 [报告]
发表于 2010-04-05 15:33 |只看该作者
这个代码 还是有问题。。

比如 我有这样的文件
  1. Stray birds of summer come to my
  2. window to sing and fly away.
  3. Come to my window,baby!
  4. I love you my
  5. window baby!!
  6. test etsttest
复制代码
他就只能查到 Come to my window,baby!

下面的就显示不出了。

论坛徽章:
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 [报告]
发表于 2010-04-05 15:49 |只看该作者
回复 36# vitas333_cu


    不会吧,应该不会有这个问题。

    不足之处是N之前没有添加$!。

论坛徽章:
0
38 [报告]
发表于 2010-04-05 16:10 |只看该作者
本帖最后由 kingoftime3 于 2010-04-05 16:16 编辑

回复 36# vitas333_cu

可以匹配到两个,如果两行中第二行开头有空格就匹配不上(例如你写的第三个my window),修改如下

  1. s/ *\n */ /   #原文是s/ *\n/ /
复制代码
当然,如果将空格用\s表示我感觉更好些

  1. s/\s*\n\s*/ /
复制代码

论坛徽章:
0
39 [报告]
发表于 2010-04-05 16:17 |只看该作者
回复 38# kingoftime3


    牛鬼 。。 佩服佩服。。 呵呵

论坛徽章:
0
40 [报告]
发表于 2010-04-05 16:25 |只看该作者
老大,我有个想法哦

就是 先通篇查找 关键字所在行 然后 复制到 保留空间, 其次 2行循环查找匹配字段,附加到 保留空间,最后x
交换 下 , 打印出来。  

这样可以吗??
可我不知道 该如何写。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP