Chinaunix首页 | 论坛 | 博客
  • 博客访问: 214232
  • 博文数量: 87
  • 博客积分: 192
  • 博客等级: 入伍新兵
  • 技术积分: 455
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-14 07:44
文章分类

全部博文(87)

文章存档

2013年(1)

2012年(86)

分类:

2012-04-14 15:41:01

原文地址:sed之n与N运用实例 作者:zooyo

文本:

Packages: Hello-1
Owner: me me me me
Other: who care?
Description:
Hello world!
Other2: don't care

1、如果 Description:之后为空,将其后一行内容并入此行。
2、如果Packages中包含‘Hello',将 Owner那一行copy 到Description行的下一行并改为Origial-Owner。

Packages: Hello-1
Owner: me me me me
Other: who care?
Description: Hello world!
Origial-Owner: me me me me
Other2: don't care



  1. sed '/Packages.*Hello/{n;h;s/^/Origial-/;x};/Description:$/{N;s/\n/ /;G}' file

[解析]
  首先匹配到有 Packages.*Hello 字样的行,n对下行进行操作,h拷贝下一行内容到缓冲区,然后替换开头为 Origial- (就是在前面添加该字样),x再和缓冲区内容对调,这样下一行的内容输出时并为发生改变,但是这样操作就把修改后的下一样的内容拷贝到缓冲区备用了,然后继续匹配到 Description:$ 结尾的行,N读去下一样内容到本行末尾中间是"\n"连接,然后替换换行为空格,并且G在该行后面添加缓冲区内容到下一行,作为一个新行。

阅读(807) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~