免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3090 | 回复: 8
打印 上一主题 下一主题

关于sed循环的一个思考和不解希望大家给点指点 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-07 07:11 |只看该作者 |倒序浏览
小弟最近看了以前的sed1line的名帖,对里面的sed循环有一些不解的地方希望大家给点指点谢谢

#如果一等号开始某一行,把这一行加到前一行后边,并且用一个空格替换等号#
这是需求我准备了一个模拟数据

I love you
=Do you remember me ?
Don't forget me
=My heart will go on
Keep moving
go go go
aaaaaa
=bbbbb
=cccccc

帖子里给出的代码是这样的   sed  ':a;$!N;s/\n=/ /;ta;D' file 这个是没问题的,我试过而且我也理解它的意思
其中:a和ta是一个循环。P;D也是一个循环.而且当只用一个的时候下面的aaa到ccc就会出问题,别的没事
我现在疑惑的是这两个循环有什么区别和循环机制?有时候就用一个:a和ta就能解决问题。希望大家能给些思路谢谢

论坛徽章:
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
2 [报告]
发表于 2010-02-07 13:49 |只看该作者
这是编程,需要了解一下编程基础吧。

论坛徽章:
0
3 [报告]
发表于 2010-02-07 14:03 |只看该作者
黑哥好~ 我了解NPD的循环机制~它是每输出一行然后删除,在从上面来一次。
但是那个:a和ta的循环是怎么走的我就不太明白了。我就想知道他跟NPD这种循环不一样在哪了
还有我今天又看了一个:a和ba也是一个循环。他跟ta的又有什么区别呢。这个sed的规则跟难看懂不想AWK那样容易明白。那个:a ta好像在一行里也能循环。

论坛徽章:
0
4 [报告]
发表于 2010-02-07 14:07 |只看该作者
回复 2# blackold


    sed真是不好理解~不像AWK那么容易看懂,和C语言很像

论坛徽章:
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
5 [报告]
发表于 2010-02-07 14:22 |只看该作者
N, P, D, t, b都是独立的sed命令。如果想学好sed,先把逐条地把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
6 [报告]
发表于 2010-02-07 14:23 |只看该作者
回复 4# iori809


    看明白了,sed脚本也一样很美!

论坛徽章:
0
7 [报告]
发表于 2010-02-07 14:24 |只看该作者
回复 5# blackold


    恩~N P D 我知道他们的意思~都是来处理多行的引入,打印,删除的~我看过sed&awk
但是里面没提到 :a 和ta ba这个。 黑哥能推荐本书吗?介绍这个t b 的谢了

论坛徽章:
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
8 [报告]
发表于 2010-02-07 14:51 |只看该作者
回复 7# iori809


    t是条件转向,相当于if conditionalExpression then goto label
    b是无条件转向,相当于goto

  : 是label命令,a是label name。

了解这些就行了,不用看书。

论坛徽章:
0
9 [报告]
发表于 2010-02-07 15:05 |只看该作者
谢了~呵呵  我要从头开始理解了。不能再看例子了,
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP